我的MS Access SQL查询在我尽可能尝试之后继续遇到此错误。
您的查询不包含指定的表达式' SWITCH(b.STD> dateadd(" h",1,a.STA),INT(SUM(a.blocktime + b。)。 blocktime +(a.std - b.sta))* 24),(b.STD< = dateadd(" h",1,a.STA)AND b.STD< =#02: 00:00#),INT(SUM(a.blocktime + b.blocktime +(Dateadd(" d",1,a.std)-b.sta))* 24))'作为聚合函数的一部分
以下是代码:
SELECT SWITCH(b.STD > dateadd("h",1,a.STA),
INT(SUM(a.blocktime + b.blocktime + ( a.std - b.sta )) * 24),
(b.STD <= dateadd("h",1,a.STA) AND b.STD <= #02:00:00#),
INT(SUM(a.blocktime + b.blocktime + (Dateadd("d", 1, a.std) - b.sta )) * 24) ) AS [Blocktime]
FROM TempFinal a Inner JOIN TempFinal b
ON (a.Dest = b.Orig)
Group By
(a.blocktime + b.blocktime + ( a.std - b.sta )),
(a.blocktime + b.blocktime + (Dateadd("d", 1, a.std) - b.sta ));
我知道问题存在于集团内部,但我不能让它发挥作用。这里奇怪的是前几次运行的确切代码,然后在我保存之后我就不能再恢复工作了。
请帮我解决问题。
非常感谢!
答案 0 :(得分:0)
正如您所说,您知道错误是在分组中。
尝试将计算放在子查询中,并在主查询中进行分组。这将解决您的问题。
看起来像这样:
SELECT SUM(c.Blocktime)
FROM
(SELECT SWITCH(b.STD > dateadd("h",1,a.STA),
INT(a.blocktime + b.blocktime + ( a.std - b.sta ) * 24),
(b.STD <= dateadd("h",1,a.STA) AND b.STD <= #02:00:00#),
INT(a.blocktime + b.blocktime + (Dateadd("d", 1, a.std) - b.sta ) * 24) ) AS [Blocktime], (a.blocktime + b.blocktime + ( a.std - b.sta )) As GroupA, (a.blocktime + b.blocktime + (Dateadd("d", 1, a.std) - b.sta )) AS GroupB
FROM TempFinal a Inner JOIN TempFinal b
ON (a.Dest = b.Orig)) AS c
GROUP BY c.GroupA, c.GroupB