У меня есть SQL-запрос, который извлекает данные из SQL Server. Мне нужно сгруппировать поле (альфа-поле) и, если имеется более одной записи, отобразить «НЕТ СОВПАДЕНИЯ». Этот запрос поможет пользователям определить вакансии с отсутствующим альфа-значением.
Вот запрос для получения данных с группировкой:
select name,Alpha from T
where name = 'John'
GROUP BY name, Alpha
Вот результаты запроса:
name Alpha
John 4
John 7
John 20
Я пытаюсь получить результат, чтобы сказать «НЕТ СОВПАДЕНИЯ», если данные не совпадают. В приведенном выше примере есть три записи, которые не совпадают. Как мне получить результат «Нет совпадений»? Если все записи совпадают, отобразите альфа-значение.
Вот ссылка на скрипт SQL, который я создал для примера:
Я не понимаю. Кажется, они все совпадают, что значит не совпадают?
@Charlieface значения альфа-канала в приведенном выше примере отличаются. Это 4,7 и 20. Я хочу отображать «НЕТ СОВПАДЕНИЯ», когда альфа-значения разные, и когда они одинаковы, чтобы отображать альфа-значение.
Я добавил еще две записи с одинаковым Alpha
:
INSERT INTO t VALUES (26, 'Andy', 15) ;
INSERT INTO t VALUES (27, 'Andy', 15) ;
Вы можете использовать COUNT с DISTINCT, чтобы проверить, все ли значения одинаковы:
select name
,IIF(COUNT(DISTINCT Alpha) = 1, CAST(MAX(Alpha) AS VARCHAR(12)), 'No Matched') AS Alpha
from T
--where name = 'John'
GROUP BY name
дает:
IIF(MIN(Alpha) = MAX(Alpha)
получает тот же результат и не требует сортировки по Alpha
Возможно, более эффективно использовать MIN = MAX
вместо COUNT(DISTINCT
.
В данном случае это дает тот же результат, но не требует сортировки по Alpha
.
SELECT
name,
IIF(MIN(Alpha) = MAX(Alpha), CAST(MAX(Alpha) AS VARCHAR(12)), 'No Matched') AS Alpha
FROM T
WHERE name = 'John'
GROUP BY
name;
Задавая вопрос, вы должны предоставить минимальный воспроизводимый пример: (1) DDL и выборочное заполнение данных, т. е. таблицы CREATE плюс операторы INSERT T-SQL. (2) Что вам нужно сделать, т. е. логика и ваш код попытаются реализовать ее в T-SQL. (3) Желаемый результат, основанный на примерных данных в # 1 выше. (4) Ваша версия SQL Server (SELECT @@version;).