Select

查詢以根據多個因素選擇不同的名稱

  • October 22, 2014

我有一個包含以下數據的表(此處簡化):

身份證 | 保單名稱 | 設置 | 狀態 | 價值

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 將產生兩行。

引用自:https://dba.stackexchange.com/questions/80780