Select
查詢以根據多個因素選擇不同的名稱
我有一個包含以下數據的表(此處簡化):
身份證 | 保單名稱 | 設置 | 狀態 | 價值
1 Default DiskUsage Enabled 1
2 Default Memory Enabled 1
3 Default CPU Enabled 0
4 Personal DiskUsage Enabled 0
5 Personal Memory Enabled 1
6 Personal CPU Enabled 0
7 Custom DiskUsage Enabled 1
8 Custom Memory Enabled 0
9 Custom CPU Enabled 1
我需要執行一個查詢來查找啟用了 DiskUsage 設置並設置為 1 以及啟用記憶體並設置為 1 的策略名稱。所以它應該返回:
政策名稱
預設
不知道我該怎麼做。
假設數據被限制以避免重複,這樣的事情怎麼樣?這是假設 Microsoft SQL Server 語法。
SELECT United.PolicyName FROM (SELECT PolicyName FROM dbo.Policies WHERE Setting = 'DiskUsage' AND State = 'Enabled' AND Value = 1 UNION ALL SELECT PolicyName FROM dbo.Policies WHERE Setting = 'Memory' AND State = 'Enabled' AND Value = 1 ) AS United GROUP BY United.PolicyName HAVING COUNT(*) = 2
結果:預設
這專門查詢您關心的每個狀態。由於有兩個要求,那麼當兩個選擇都找到一行時,UNION 將產生兩行。