#tsql
#tsql
Вопрос:
У меня есть эта таблица
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:
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
Вы должны учитывать нули в столбце:
- COUNT(*) подсчитывает их
- COUNT(col1) не учитывает их
То есть столбцы с сочетанием значений As и NULL не являются одним значением. MIN и MAX будут давать A, потому что они игнорируют NULL.
Редактировать:
- удалено DISTINCT, чтобы получить одинаковые значения для проверки NULL
- добавлена проверка MIN / MAX (согласно удаленному ответу Марка Байерса) для проверки уникальности