2016-09-30 89 views
0

假設我有像列交叉口

ID  PROD  UNIT 
1 | 100 | X 
2 | 100 | Y 
3 | 100 | Z 
4 | 200 | X 
5 | 200 | Y 
6 | 300 | Y 
7 | 300 | Z 

欲獲得的值從單位列的交點從PROD列中的每個代碼的表,由一個SQL查詢。表格中的產品數量是可變的,但我需要爲所有產品交叉UNIT。 在我的例子,結果表將與單行表,因爲從PROD所有產品的共同點只有一個單元:

PROD UNIT 
300  Y 
+0

你有嘗試過什麼嗎?你發現什麼不工作? – dfundako

+0

@dfundako我嘗試了一些基於count(*)的選擇...但是我認識到使用UNIT計數/分組在這個問題中根本無濟於事......所以目前我還不知道從哪裏開始 – relysis

+0

你說你的結果集應該只有Y作爲UNIT,因爲它是所有PROD都有的唯一共同點。但爲什麼你的結果集只有一個PROD?什麼是要顯示哪個值? –

回答

1
SELECT MAX(PROD) as Prod, Unit 
FROM 
    TableName 
GROUP BY 
    Unit 
HAVING 
    COUNT(DISTINCT PROD) = (SELECT COUNT(DISTINCT PROD) FROM TableName) 

你需要能夠在DISTINCT Count of Products grouped by Unit與比較DISTINCT Count of All Products in the table。您可以在HAVING子句中使用子查詢來完成此操作。

我認爲你想要Maximum PROD Id,根據你的結果,如果你想要其他的東西,如果你想要所有的記錄只是用它作爲派生表,並加入回來得到你想要的結果。