【发布时间】:2026-01-06 09:15:01
【问题描述】:
我有这个问题:
SELECT BLI.EmpID, ShortEmployees.EmpName1 AS EmpName, SUM(BLI.FinalValue) AS Total
FROM BLI
INNER JOIN BSR ON BLI.BLID = BSR.BLID
INNER JOIN ShortEmployees ON BLI.EmpID = ShortEmployees.EmpID
WHERE (CONVERT(varchar, BLI.BLDate, 112) >= CONVERT(varchar, CONVERT(datetime, '1/10/2012', 103), 112))
AND (CONVERT(varchar, BLI.BLDate, 112) <= CONVERT(varchar, CONVERT(datetime, '30/10/2012', 103), 112))
AND (BSR.BSTID = 2)
AND (BLI.State IN (2, 6, 8, 9, 10, 12, 18))
GROUP BY BLI.EmpID, ShortEmployees.EmpName1
ORDER BY Total DESC
我预计总数为 42,但我得到了 126 的三倍!
编辑: 我的期望是错误的,查询返回正确的总和。
【问题讨论】:
-
检查连接。也许您希望在 BSR 中为该 BLID 找到一行,它们是 3。
-
您使用的是哪个 DBMS?我想了解一下 CONVERT 函数在您的 DBMS 中的作用。
-
@Colin'tHart,SQLServer。 convert 做一个到目前为止的转换字符串。
-
我使用的是 SQLServer 2008,BLID 是 BSR 的主键,所以不可能有 3 个相同的行值。
-
@mhdali - 从这里的 cmets 和下面的问题来看,你现在是不是说
126真的是正确的结果,而且一开始就没有问题?
标签: sql sql-server join sum