【发布时间】:2013-12-31 22:00:16
【问题描述】:
我带着另一个问题回来了。我已经修补了 1 天半,但仍然没有运气。所以我有下面的表格。
Table1
Field1 Field2 Field3 Field4 Field5
DR1 500 ID1 Active TR1
DR2 250 ID2 Active TR1
DR3 100 ID1 Active TR1
DR4 50 ID3 Active TR1
DR5 50 ID1 Cancelled TR1
DR6 150 ID1 Active TR2
Table2
Field1 Field3
ID1 Chris
ID2 John
ID3 Jane
Table3
Field1 Field2
TR1 Shipped
TR2 Pending
我目前可以达到这个效果。
Name Total
Chris 650 3
John 250 1
Jane 50 1
使用这条sql语句
SELECT t2.Field3 as Name , SUM(t1.Field2) as Total
FROM [Table1] t1 INNER JOIN [Table2] t2 ON t1.Field3 = t2.Field1
GROUP BY t2.Field3
但是,我想实现如下所示的结果。
Chris 600 2
John 250 1
Jane 50 1
我想先检查表 3,如果它有一个“已发货”字段 2,然后它包括表 1 中的所有内容和“活动”字段 4。它不应包括“已取消”字段 4。如果 Table3 有一个 Pending 的 Field2,它也不应该包含它。我会很感激任何一点帮助。谢谢。
【问题讨论】:
-
你错过了一些信息。什么是“3-1-1”?在您的选择中,您仅查询 2 个字段(名称和总和)。什么是650?克里斯:500+100+50+150 = 800
-
您可以将这些条件添加到您的查询中: WHERE Table1.Field5 = 'TR1' AND Table1.Field4 = 'Active' ,当然,在 GROUP BY 语句之前
-
抱歉,3-1-1 是 COUNT(*)。 @BaBL86
-
@wxyz,是的,这就是这样做的方法,但是我不能做 WHERE 条件,除非我首先通过执行 INNER JOIN 将 Table3 连接到 Table1,现在它已经在使用 1 INNER JOIN对于表 2。我不知道将 Table3 的第二个 INNER JOIN 放在哪里
标签: sql database group-by sum inner-join