Как выбрать только одну строку, которая имеет два разных значения в одном столбце
Всем Привет,
Мне нужна ваша помощь для SQL. У меня есть такой стол, как;
Статус ID TestID
1 2 паса
1 2 не
2 3 не
2 3 пройти
3 4 не
4 5 сдать
Я хочу вернуть только одну строку для каждого идентификатора. Если ID уже не получится, возвращать только записи с ошибкой, поэтому outout должен выглядеть;
Статус ID TestID
1 2 не
2 3 не
3 4 не
4 5 сдать
Что я уже пробовал:
Я пробовал использовать CTE и Temp delete и он работает нормально но я хотел сделать то же самое с помощью Joins;
Создать таблицу #tmp
(
Идентификатор Инт,
grpid int,
пас варчар(10)
)
Вставить в #tmp (Id,grpid,pass)
Значения (1,2,'Pass'),
(1,2,'ошибка'),
(2,3,"неудача"),
(2,3,"пас"),
(3,2,"пас"),
(4,2,"неудача")
--Выберите * из #tmp
;С TempEmp (Id,grpid,pass,duplicateRecCount)
АС
(
Выберите ID,grpid,сдать,функции row_number() над(раздел по ID,grpid заказа пропуска)
Как duplicateRecCount
Из #tmp
)
Выберите * в #tmp1 из TempEmp
Выберите * из #tmp1
--Теперь Удалите Дубликаты Записей
Удалить из #tmp1
Где duplicateRecCount > 1
Выберите * из #tmp1
Tomas Takac
Вам не нужно вставлять в #tmp1 и удалять. Просто выберите Id,grpid,pass from TempEmp WHERE duplicateRecCount = 1. В качестве альтернативы вы можете сделать это с помощью union.