【发布时间】:2017-03-27 07:11:43
【问题描述】:
在我尝试了所有可能的方法后,我的 MS Access SQL 查询一直遇到此错误。
您的查询不包括指定的表达式 'SWITCH(b.STD > dateadd("h",1,a.STA), INT(SUM(a.blocktime + b.blocktime + ( a.std - b. sta )) * 24) , (b.STD
代码如下:
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 ));
我知道问题出在 Group By 部分,但我无法让它发挥作用。奇怪的是前几次运行的确切代码,然后在我保存后我无法再让它恢复工作。
请帮我解决问题。
非常感谢!
【问题讨论】:
-
好像你想做一个条件聚合,你可能需要在
SWITCH的结果上创建一个SUM,像这样:SELECT SUM(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]跨度> -
@dnoeth:它不允许我使用 sum 函数
-
你不能在 SWITCH 上使用 SUM,奇怪。我没有深入的 Access 知识,但我认为它类似于 CASE。您是否删除了 SWITCH 中的 SUM?
标签: sql sql-server ms-access