我在52周的时间内在原点和目的地之间有货运数据。我试图了 a)找出每周1到52之间的出发地和目的地之间的货物数量 b)找出no中的差异。每周之间的货运(第2周 - 第1周,第3周 - 第2周等) c)找出每个OD对的平均差异。
SELECT
[Origin],
[Destination],
AVG(ABS(SUM(CASE
WHEN [DeliveryWeek] = 2 THEN 1
ELSE 0
END)-SUM(CASE
WHEN [DeliveryWeek] = 1 THEN 1
ELSE 0
END)) + ABS(SUM(CASE
WHEN [DeliveryWeek] = 3 THEN 1
ELSE 0
END)-SUM(CASE
WHEN [DeliveryWeek] = 2 THEN 1
ELSE 0
END)) + ABS(SUM(CASE
WHEN [DeliveryWeek] = 4 THEN 1
ELSE 0
END)-SUM(CASE
WHEN [DeliveryWeek] = 3 THEN 1
ELSE 0
END))
持续52周。
但它返回
无法对包含聚合或子查询的表达式执行聚合函数。
有更好的解决方案吗?
答案 0 :(得分:1)
你能把这笔钱除以3吗?
SELECT [Origin], [Destination],
(ABS(SUM(CASE WHEN [DeliveryWeek] = 2 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 1 THEN 1 ELSE 0 END)) +
ABS(SUM(CASE WHEN [DeliveryWeek] = 3 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 2 THEN 1 ELSE 0 END)) +
ABS(SUM(CASE WHEN [DeliveryWeek] = 4 THEN 1 ELSE 0 END)-SUM(CASE WHEN [DeliveryWeek] = 3 THEN 1 ELSE 0 END))
) / 3