Sql server SQL选择符合其他表条件的记录

Sql server SQL选择符合其他表条件的记录,sql-server,tsql,join,filtering,aggregate-functions,Sql Server,Tsql,Join,Filtering,Aggregate Functions,我有一个非常复杂的查询,试图给出一个我遇到问题的子表的简单示例,如果您需要更多信息或上下文,请告诉我 我在这里展示了一个CSV文件,其中包含一些示例数据: 我们做蛋糕,99%的蛋糕都是我们自己做的。1%是指当我们从分包商处收到蛋糕并进行“接收”和“审核”时 我想写的是这样的东西: SELECT Cake.Cake Instruction.Cake_Instruction_Key Steps FROM Cake Join Instruction ON Cake.Cake_Key = In

我有一个非常复杂的查询,试图给出一个我遇到问题的子表的简单示例,如果您需要更多信息或上下文,请告诉我

我在这里展示了一个CSV文件,其中包含一些示例数据:

我们做蛋糕,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

提前感谢您的帮助

看看HAVING关键字:

它的工作原理与WHERE子句大致相同,但用于GROUP BY子句之后的聚合函数


但要小心,这可能会很慢。您应该尽可能地在该区域中过滤记录的数量,甚至考虑使用临时表将数据聚合到第一个。

您所讨论的是GROUPBY子句,所以在这种情况下,您需要添加一些类似于

的内容。
GROUP BY Cake.Cake, Instruction.Cake_Instruction_Key, Steps
HAVING MIN(Steps.Step_Key) = 1