【发布时间】:2018-03-22 10:52:05
【问题描述】:
我有一个如下查询。表之间的关系是:
每辆卡车可能有多个司机。表列表将表 Truck 中的每一行与表 Driver 中的行连接起来。现在我想获取特定条件下独特卡车的数量,以及该条件下独特卡车的总大小。
这是我所拥有的:
SELECT t.Year AS [Year]
, t.Month AS [Month]
, t.Day AS [Day]
-- Count will not count NULL
, COUNT( DISTINCT (CASE WHEN (t.Sent = 1 AND r.Internal=1) THEN L.TruckId
ELSE NULL
END) ) AS [Count]
, SUM(CASE WHEN (t.Sent = 1 AND r.Internal = 1) THEN t.Size
END) AS [Size]
FROM Truck t
INNER JOIN List L ON t.Id = L.TruckId
INNER JOIN Driver r ON L.DriverId = r.Id
GROUP BY t.Year, t.Month, t.Day
- COUNT 正确,但 SUM 不正确。
我的问题是如何得到这个 SUM? 而且我不想写 2 个查询并加入它们。
谢谢
【问题讨论】:
-
请提供样本数据和预期结果。
-
你说“总和不是”是什么意思?,你期望什么值?首先我建议你使用这样的“else”子句:SUM(CASE WHEN (t.Sent = 1 AND r.Internal = 1) THEN t.Size ELSE 0 END) AS [Size]
标签: sql-server