SQL平均值仅在工作日
我在MS Access中有一个数据表:SQL平均值仅在工作日,sql,excel,vba,ms-access,Sql,Excel,Vba,Ms Access,我在MS Access中有一个数据表: [DateID] |[NameID]|[ValueID] 01/01/2019 |Ben |5 01/01/2019 |Ace |6 01/01/2019 |Ken |7 01/01/2019 |Jon |10 . . . 03/01/2019 |Ben |8 03/01/2019 |Ken |55 03/01/2019 |Jan |52 基本上,一天内以不同的名称输入多个ValueID条目,每
[DateID] |[NameID]|[ValueID]
01/01/2019 |Ben |5
01/01/2019 |Ace |6
01/01/2019 |Ken |7
01/01/2019 |Jon |10
.
.
.
03/01/2019 |Ben |8
03/01/2019 |Ken |55
03/01/2019 |Jan |52
基本上,一天内以不同的名称输入多个ValueID条目,每天至少输入100多个条目
我需要画出两个特定日期的工作日的平均值ID,sql代码通过Excel VB执行。到目前为止,sql代码无法区分工作日和周末
到目前为止,我掌握的代码是:从[TABLE]中选择[DATEID]在2018年1月10日至2018年2月15日之间的平均值[ValueID]
我已经找了一段时间了。我得到的最接近的结果是从[TABLE]中选择平均[ValueID],其中[DATEID]在2018年1月10日至2018年2月15日之间,DATENAMEWEEKDAY[DATEID]在“周一”、“周二”、“周三”、“周四”、“周五”中
但是,它在表达式错误中给了我一个未定义的函数“DATENAME”。如果我完全诚实的话,我甚至不确定我是否正确使用了这个函数
我知道我可以从技术上将日期范围导出到Excel工作表中,然后从中排除,但它可能是一个10k+数据点导出。因此,我更愿意通过sql来实现,因为这样看起来更干净 您需要和,因此这将实现:
...AND UCase(WeekdayName(Weekday([DATEID], 2))) NOT IN ('SATURDAY','SUNDAY')
也许您需要将2改为1或其他,以获得正确的日期名称2代表星期一作为一周的开始。您需要并且,这样做可以:
...AND UCase(WeekdayName(Weekday([DATEID], 2))) NOT IN ('SATURDAY','SUNDAY')
可能您需要将2改为1或其他以获得正确的日期名称2代表星期一作为一周的开始。切勿使用文字,因为这些文字是本地化的,因此:
SELECT
AVG([ValueID])
FROM
[TABLE]
WHERE
([DATEID] BETWEEN #2018/01/10# AND #2018/01/15#)
AND
Weekday([DATEID], 2) < 6
在函数Weekday中,参数2表示星期一为一周的第一天,然后,参数6表示星期六。切勿使用文字,因为文字是本地化的,因此:
SELECT
AVG([ValueID])
FROM
[TABLE]
WHERE
([DATEID] BETWEEN #2018/01/10# AND #2018/01/15#)
AND
Weekday([DATEID], 2) < 6
在函数Weekday中,参数2表示星期一为一周的第一天,然后,参数6表示星期六