【发布时间】:2019-11-23 20:50:15
【问题描述】:
感谢您帮助我找到解决这个我无法弄清楚的 SQL 的方法。
在我的 SQL 语句中,我有 1 个内部联接和 1 个外部联接。其中一个求和需要计算从内部连接返回的行数
Table 1
Location |Date |Column3 |Column4
1 |11/22/2019 |23 |3
2 |11/22/2019 |23 |4
3 |11/22/2019 |12 |5
4 |11/22/2019 |54 |6
5 |11/22/2019 |65 |7
6 |11/22/2019 |23 |8
7 |11/22/2019 |5 |9
Table 2
Location |Date |Column3 |Column4 |Column5
1 |11/22/2019 |1 |8.5 |06
1 |11/22/2019 |2 |8.5 |06
1 |11/22/2019 |3 |8 |06
1 |11/22/2019 |4 |8.5 |06
2 |11/22/2019 |5 |7.5 |06
2 |11/22/2019 |5 |8.5 |06
2 |11/22/2019 |6 |8.5 |06
Table 3
Location |Date |Column3 |Column4 |Column5
1 |11/22/2019 |3 |3 |1
2 |11/22/2019 |4 |4 |0
3 |11/22/2019 |6 |5 |1
4 |11/22/2019 |25 |6 |0
5 |11/22/2019 |65 |7 |1
6 |11/22/2019 |65 |8 |0
7 |11/22/2019 |78 |9 |1
我的错误陈述,需要在第 5 行计数
SELECT
T3.Location AS Location,
T3.Date AS [Date],
SUM(T1.Column3- (T2.Column3+ T2.Column4)) as Result_Numerator,
SUM(T1.Column4 - COUNT(T2.Column2)) AS Result_Denominator,
SUM(T3.Column3 - T3.Column4) as Plan_Numerator,
SUM(T3.Column4 - T3.Column3) as Plan_Denominator,
'Element Name' as Element
FROM Table1 T1
INNER JOIN
Table2 T2 ON T1.Date= T2.Date AND T1.Location = T2.Location
RIGHT OUTER JOIN
Table3 T3 ON T1.Date = T3.DATE and T3.Location = P.Location
WHERE T1.Location = '1' AND (T3.Date>({ts '2019-11-01 00:00:00'}))
AND T3.Column5 = '0' AND T2.Column3>0 AND T2.Column5 ('05','06')
GROUP BY T3.Location,
T1.CNY_CD,
T3.PLN_DATE,
我查看了一些类似的问题,他们建议先使用 union all 来获取计数,但我不完全理解如何使用 T1 和 T2 之间的内部连接来实现这一点。
非常感谢您帮助我 D
【问题讨论】:
-
我还不明白你到底想选择什么。你能显示你想要的结果吗?桌子的钥匙是什么?
table1和table3是Location吗? -
顺便问一下,您的 DBMS 是什么? MySQL? SQL 服务器? ...
-
我正在使用 SQL Server
-
以位置 1 为例,我想要的结果是 Location =1 Date = 11/22/2019 Result_Denominator = 3 - 4
-
在不知道表的键是什么的情况下,我只能猜测您到底需要什么查询。但在我看来,解决您的问题的方法似乎很明显,您应该首先汇总需要汇总的内容,然后才加入。我已经发布了一个显示这个的答案。
标签: sql sql-server