2017-02-03 116 views
0

我有一個非常複雜的查詢,並試圖給出一個我遇到問題的子表的簡單示例,如果您需要更多信息或上下文,請讓我知道。SQL選擇滿足另一個表的標準的記錄

我已經擺在了與這裏的一些樣本數據的CSV文件:我們的蛋糕 https://drive.google.com/open?id=0B4xdnV0LFZI1dzE5S29QSFhQSmM

我們做蛋糕,99%是由美國製造。 1%是當我們從分包商那裏交付給我們的蛋糕,我們'接收'和'審覈'它。

我想做的事就是寫這樣的:

SELECT 
Cake.Cake 
Instruction.Cake_Instruction_Key 
Steps 

FROM 
Cake 
Join Instruction 
ON Cake.Cake_Key = Instruction.Cake_Key 
JOIN Steps 
ON Instruction.Step_Key = Steps.Step_Key 

WHERE 
MIN(Steps.Step_Key) = 1 

,因爲你不能有WHERE子句在聚合此失敗。

期望的結果將是:

Cake C 13 Receive 
Cake C 14 Audit 
Cake D 15 Receive 
Cake D 16 Audit 

預先感謝您的幫助!

回答

0

在HAVING關鍵字來看看: https://msdn.microsoft.com/en-us/library/ms180199.aspx

它的工作原理或多或少一樣的WHERE子句但GROUP BY子句後聚集函數。

但要小心,這可能會很慢。您應該儘可能地在WHERE中過濾記錄數量,甚至考慮使用臨時表格將數據聚合到第一個數據中。

0

什麼你在談論的是GROUP BY/HAVING子句,所以你的情況,你將需要添加類似

GROUP BY Cake.Cake, Instruction.Cake_Instruction_Key, Steps 
HAVING MIN(Steps.Step_Key) = 1 
相關問題