2017-01-11 48 views
-1

我有以下SQL语句。但是,它无法运行。它说的是:MS Access Switch综合功能

你的查询不包括指定表达式 “则DateValue(开关(小时([日期时间])> = 18和小时([日期时间])< 22,[日期 时间] ([日期时间])> = 22,[日期时间],小时([日期时间])> = 0和 小时([日期时间])< 2,[日期时间] )> = 2和小时([日期 时间])< 6,[日期时间] -1,小时([日期时间])> = 6和小时([日期 时间])< 10,[日期时间] - 1,Hour([Date Time])> = 10 And Hour([Date Time])< 14,[Date Time] -1,Hour([Date Time])> = 14 And Hour([Date Time]) < 18,[Date Time] -1))作为DateValue'作为聚合函数 的一部分。

SELECT DateValue(Switch(Hour([Date Time])>=18 And Hour([Date Time])<22,[Date Time],Hour([Date Time])>=22,[Date Time],Hour([Date Time])>=0 And Hour([Date Time])<2,[Date Time],Hour([Date Time])>=2 And Hour([Date Time])<6,[Date Time]-1,Hour([Date Time])>=6 And Hour([Date Time])<10,[Date Time]-1,Hour([Date Time])>=10 And Hour([Date Time])<14,[Date Time]-1,Hour([Date Time])>=14 And Hour([Date Time])<18,[Date Time]-1)) As DateValue, Avg([MFR g/10min]) AS Average, Max([MFR g/10min]) - Min([MFR g/10min]) As Difference 
FROM [In process analysis result] 
GROUP BY DateValue([Date Time]); 

是否有任何线索有什么不好?

编辑1: 如果我运行下面的查询,它会工作:

SELECT DateValue(Switch(Hour([Date Time])>=18 And Hour([Date Time])<22,[Date Time],Hour([Date Time])>=22,[Date Time],Hour([Date Time])>=0 And Hour([Date Time])<2,[Date Time],Hour([Date Time])>=2 And Hour([Date Time])<6,[Date Time]-1,Hour([Date Time])>=6 And Hour([Date Time])<10,[Date Time]-1,Hour([Date Time])>=10 And Hour([Date Time])<14,[Date Time]-1,Hour([Date Time])>=14 And Hour([Date Time])<18,[Date Time]-1)) AS DateValue, Avg([MFR g/10min]) AS Average, Max([MFR g/10min]) - Min([MFR g/10min]) As Difference FROM [In process analysis result] GROUP BY Switch(Hour([Date Time])>=18 And Hour([Date Time])<22,[Date Time],Hour([Date Time])>=22,[Date Time],Hour([Date Time])>=0 And Hour([Date Time])<2,[Date Time],Hour([Date Time])>=2 And Hour([Date Time])<6,[Date Time]-1,Hour([Date Time])>=6 And Hour([Date Time])<10,[Date Time]-1,Hour([Date Time])>=10 And Hour([Date Time])<14,[Date Time]-1,Hour([Date Time])>=14 And Hour([Date Time])<18,[Date Time]-1);

然而,结果不是我所期待的。我试图通过组列之日起,DateValue

enter image description here

的则DateValue()没有被分组,我不能让马克斯和Min之间的平均和差异性。

请帮助...

+0

可能的复制 - SQL查询每天数据的平均值](http://stackoverflow.com/questions/41581378/ms-access-sql-query-for-average-of-each-day-data) – Gustav

+0

你不会抵消DateTime这种价值。研究你的其他问题。 – Gustav

回答

0

您的分组功能应该是一样的选择(补充:则DateValue()到您的分组标准):[MS访问的

SELECT DateValue(Switch(Hour([Date Time])>=18 And Hour([Date Time])<22,[Date Time],Hour([Date Time])>=22,[Date Time],Hour([Date Time])>=0 And Hour([Date Time])<2,[Date Time],Hour([Date Time])>=2 And Hour([Date Time])<6,[Date Time]-1,Hour([Date Time])>=6 And Hour([Date Time])<10,[Date Time]-1,Hour([Date Time])>=10 And Hour([Date Time])<14,[Date Time]-1,Hour([Date Time])>=14 And Hour([Date Time])<18,[Date Time]-1)) AS DateValue, Avg([MFR g/10min]) AS Average, Max([MFR g/10min]) - Min([MFR g/10min]) As Difference FROM [In process analysis result] GROUP BY DateValue(Switch(Hour([Date Time])>=18 And Hour([Date Time])<22,[Date Time],Hour([Date Time])>=22,[Date Time],Hour([Date Time])>=0 And Hour([Date Time])<2,[Date Time],Hour([Date Time])>=2 And Hour([Date Time])<6,[Date Time]-1,Hour([Date Time])>=6 And Hour([Date Time])<10,[Date Time]-1,Hour([Date Time])>=10 And Hour([Date Time])<14,[Date Time]-1,Hour([Date Time])>=14 And Hour([Date Time])<18,[Date Time]-1));