Tsql-запрос для поиска одинаковых значений строк по столбцам - PullRequest
3 голосов
/ 27 октября 2011

У меня есть эта таблица

col 1   col 2   col 3   ....    col N
-------------------------------------
1       A       B               fooa        
10      A       foo             cc
4       A       B               fooa

возможно ли с помощью запроса tsql вернуть только одну строку со значением только там, где значения ВСЕ одинаковы?

col 1   col 2   col 3   ....    col N
-------------------------------------
--      A       --              --

1 Ответ

5 голосов
/ 27 октября 2011
SELECT
     CASE WHEN COUNT(col1) = COUNT(*) AND MIN(col1) = MAX(col1) THEN MIN(col1) END AS col1,
     CASE WHEN COUNT(col2) = COUNT(*) AND MIN(col2) = MAX(col2) THEN MIN(col2) END AS col2,
     ...
FROM yourtable

Вы должны разрешить NULL в столбце:

  • COUNT (*) считает их
  • COUNT (col1) не считает их

То есть столбцы со смесью As и NULL не являются одним значением.MIN и MAX оба дали бы A, потому что они игнорировали NULL.

Edit:

  • удалил DISTINCT, чтобы получить одинаковые значения для проверки NULL
  • добавлена ​​проверка MIN / MAX(согласно Марк Байерс удалил ответ), чтобы проверить уникальность
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...