2017-02-03 68 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 
相关问题