我有一个非常复杂的查询,并试图给出一个我遇到问题的子表的简单示例,如果您需要更多信息或上下文,请告诉我。
我在这里提出了一个包含一些示例数据的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 :(得分:0)
看看HAVING关键字:
KeyDown
它与WHERE子句的工作方式大致相同,但对于GROUP BY子句后的聚合函数。
但要注意这可能很慢。您应该尝试在WHERE中尽可能地减少记录数量,甚至考虑使用临时表将数据聚合到第一个。
答案 1 :(得分:0)
您正在谈论的是GROUP BY / HAVING子句,因此在您的情况下,您需要添加类似
的内容GROUP BY Cake.Cake, Instruction.Cake_Instruction_Key, Steps
HAVING MIN(Steps.Step_Key) = 1