Sql-Server
A = 1 else 0 如果 B 在 ms sql server(azure data studio) 中滿足兩個條件
我正在嘗試根據另一列的值來區分列。我試圖使用 CASE 函式,但無法得到我想要的。
健康)狀況
- 如果 ColB 只有 1 則線上
- 如果 ColB 只有 2 則離線
- 如果 ColB 同時具有 1 和 2,則兩者都有
- 如果 ColB 沒有 1 或 2 則沒有
結果應該是這樣的
謝謝!
看起來你只需要條件
COUNT
SELECT t.ColA, CASE WHEN COUNT(CASE WHEN t.ColB = '1' THEN 1 END) > 0 THEN CASE WHEN COUNT(CASE WHEN t.ColB = '2' THEN 1 END) > 0 THEN 'both' ELSE 'online' END ELSE CASE WHEN COUNT(CASE WHEN t.ColB = '2' THEN 1 END) > 0 THEN 'offline' ELSE 'none' END END FROM YourTable t GROUP BY t.ColA;
這只是給同一隻貓剝皮的另一種方法,使用條件
COUNT(DISTINCT)
和條件MAX()
:SELECT ColA , distinguish = CASE COUNT(DISTINCT CASE WHEN ColB IN ('1', '2') THEN ColB END) WHEN 0 THEN 'none' WHEN 2 THEN 'both' ELSE CASE MAX(CASE WHEN ColB IN ('1', '2') THEN ColB END) WHEN '1' THEN 'online' ELSE 'offline' END END FROM dbo.YourTable GROUP BY ColA ;