2016-05-16 64 views
4

請考慮下表。每個文檔(id)都屬於一個組(group_id)。查看同一組中的所有記錄是否爲可接受的類型

----------------------- 
id group_id value 
----------------------- 
1  1   A 
2  1   B 
3  1   D 
4  2   A 
5  2   B 
6  3   C 
7  4   A 
8  4   B 
9  4   B 
10  4   B 
11  4   C 
12  5   A 
13  5   A 
14  5   A 
15  6   B 
16  6   NULL 
17  6   NULL 
18  6   D 
19  7   NULL 
20  8   B 

1 /每個文檔具有值NULLABCD

2 /如果在同一組中的文件的所有要麼AB作爲值,該組被完成

3 /在這種情況下,所期望的輸出將是:

--------------------- 
group_id completed 
--------------------- 
    1   0  <== because document 3 = D 
    2   1  <== all documents have either A or B as a value 
    3   0  <== only one document in the group, value C 
    4   1  <== all documents have either A or B as a value 
    5   1  <== all documents have value A 
    6   0  <== because of NULL values and value D 
    7   0  <== NULL 
    8   1  <== only one document, value B 

是否有可能查詢此結果集?

因爲我不是很有經驗的SQL,任何幫助將不勝感激!

回答

7

嘗試此

SELECT [group_id], 
     CASE 
     WHEN Count(CASE WHEN [value] IN ('A', 'B') THEN 1 END) = Count(*) THEN 1 
     ELSE 0 
     END AS COMPLETED 
FROM yourtable 
GROUP BY [group_id] 
+0

不會MIN(CASE WHEN [值] IN( 'A', 'B')THEN ELSE 1 0 END)是相同的,並且便宜? – Turo

+0

@Turo - 兩者不一樣 –

+0

在這種情況下它們有區別嗎? – Turo

相關問題