CASE на две строки с одинаковыми идентификаторами, но разными значениями - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующая таблица.Мне нужен SQL-запрос, который будет анализировать две или более строки с одинаковым идентификатором и: (1) CASE 'Result' одинаков для обеих строк, print 'Passed';(2) В случае, если «Результат» не одинаков для обеих строк, выведите «Failed».

ID  Result  
73  2000    Passed
73  2000    
43  2000    Failed
43  1003    

enter image description here

Возможно ли это все ??

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Одна опция использует EXISTS:

SELECT DISTINCT ID
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t1.ID = t2.ID AND t2.Result <> t1.Result);

Другая опция использует агрегацию:

SELECT ID
FROM yourTable
GROUP BY ID
HAVING COUNT(DISTINCT Result) = 1;

Демо

0 голосов
/ 28 сентября 2018

Если вам нужна одна строка для каждого идентификатора, тогда используйте group by:

select id,
       (case when min(result) = max(result) then 'Passed'
             else 'Failed'
        end) as flag
from t
group by id;

Если вам нужно значение всех строк вашей исходной таблицы, тогда это просто:

select id,
       (case when not exists (select 1
                              from t t2
                              where t2.result) = t.result
                             )
             then 'Passed' else 'Failed'
        end) as flag
from t
group by id;

Однако поставить результат на одну строку проблематично.Нет возможности различить строки, поэтому это более сложно (не невозможно, но я подозреваю, что одно из вышеперечисленного решает вашу реальную проблему).

0 голосов
/ 28 сентября 2018

Попробуйте ниже:

select id, case when count (distinct result)=1 then 'Passed' else 'Failed' end
group by id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...