Я пытаюсь запросить таблицу с именем DeviceGroups
, которая содержит 2 столбца, MachineID
и GroupID
. Вот пример
MachineID GroupID
------------------
1 A1
1 A3
2 A2
3 A2
3 A3
4 A4
4 A5
5 A3
Мне нужно показать все MachineID, которые содержат GroupID A1 или A2, с отдельным столбцом, который даст Да / Нет, если этот MachineID также содержит A3. Вот ожидаемый результат:
MachineID GroupID ContainsA3?
------------------------------
1 A1 Yes
2 A2 No
3 A2 Yes
Обратите внимание, что MachineID 4 и 5 не указаны, потому что они не содержат A1 или A2, даже если MachineID 5 содержит A3. Я не могу создать предложение WHERE для фильтрации только A1 и A2, потому что все результаты будут отображать ContainsA3? как ложное, и если я включу A3, то MachineID 5 появится с GroupID как NULL, что также не разрешено. Любые идеи? Вот где я застрял:
SELECT MachineID,
CASE WHEN GroupID = 3 then "Yes" Else "No" END AS [ContainsA3?]
FROM DeviceGroups
И вот результат:
MachineID ContainsA3?
-----------------
1 No
1 Yes
2 No
3 No
3 Yes
4 No
4 No
5 Yes
Если я добавлю предложение WHERE:
SELECT MachineID,
CASE WHEN GroupID = 3 then "Yes" Else "No" END AS [ContainsA3?]
FROM DeviceGroups
WHERE GroupID = 3
MachineID ContainsA3?
-----------------
1 Yes
3 Yes
5 Yes