SQL Select 在 Access 中按工作日进行不同的分组
SQL Select DISTINCT GROUP BY Weekday in Access
我正在尝试计算每个工作日 table 中用户 ID 的不同数量(例如,工作日 1 = 星期一有 545 个用户 ID,工作日 2 = 星期二有 120 个用户 ID,等等)。我在 Access Visual Basic 中执行此操作,但语法应该对 SQL 通用。这是我的 VB 代码:
sSQL = " SELECT Weekday(" & tablename & ".[DATE]) AS WEEKDAY, Count(DISTINCT " & tablename & ".[UserID]) AS User_COUNT"
sSQL = sSQL & " FROM " & tablename
sSQL = sSQL & " GROUP BY Weekday(" & tablename & ".[DATE])"
qdf.SQL = sSQL
简单的 SQL 语法应该如下所示(根据评论和测试编辑):
SELECT Weekday(tbl.[Date]) AS WEEKDAY, Count(DISTINCT tbl.[UserID]) AS User_COUNT
FROM tbl
GROUP BY Weekday(tbl.[Date])
..而 [Date] 是 tbl 中格式为 Datetime 的字段,[UserID] 是格式为 Long(有重复)的字段。
当我尝试 运行 命令时,它告诉我 "Missing Operator in Query-Syntax.."
这是我的 VB 代码的问题还是 SQL 语法错误?
MS Access 数据库引擎不支持 COUNT(DISTINCT ...)
。
要解决此问题,请参阅此线程:SQL : how can i count distinct record in MS ACCESS 作者建议使用子查询解决问题:
SELECT
user_id
, COUNT(*) AS count_distinct_clients
FROM
( SELECT DISTINCT
user_id,
client_id
FROM tbl_sActivity
) AS tmp
GROUP BY
user_id ;
根据需要更改查询代码。
[编辑]
SELECT
wday, COUNT(UserId) AS count_distinct_users
FROM
( SELECT DISTINCT WEEKDAY([Date]) AS wday, UserId
FROM tblName
) AS tmp
GROUP BY
wday;
我正在尝试计算每个工作日 table 中用户 ID 的不同数量(例如,工作日 1 = 星期一有 545 个用户 ID,工作日 2 = 星期二有 120 个用户 ID,等等)。我在 Access Visual Basic 中执行此操作,但语法应该对 SQL 通用。这是我的 VB 代码:
sSQL = " SELECT Weekday(" & tablename & ".[DATE]) AS WEEKDAY, Count(DISTINCT " & tablename & ".[UserID]) AS User_COUNT"
sSQL = sSQL & " FROM " & tablename
sSQL = sSQL & " GROUP BY Weekday(" & tablename & ".[DATE])"
qdf.SQL = sSQL
简单的 SQL 语法应该如下所示(根据评论和测试编辑):
SELECT Weekday(tbl.[Date]) AS WEEKDAY, Count(DISTINCT tbl.[UserID]) AS User_COUNT
FROM tbl
GROUP BY Weekday(tbl.[Date])
..而 [Date] 是 tbl 中格式为 Datetime 的字段,[UserID] 是格式为 Long(有重复)的字段。
当我尝试 运行 命令时,它告诉我 "Missing Operator in Query-Syntax.." 这是我的 VB 代码的问题还是 SQL 语法错误?
MS Access 数据库引擎不支持 COUNT(DISTINCT ...)
。
要解决此问题,请参阅此线程:SQL : how can i count distinct record in MS ACCESS 作者建议使用子查询解决问题:
SELECT
user_id
, COUNT(*) AS count_distinct_clients
FROM
( SELECT DISTINCT
user_id,
client_id
FROM tbl_sActivity
) AS tmp
GROUP BY
user_id ;
根据需要更改查询代码。
[编辑]
SELECT
wday, COUNT(UserId) AS count_distinct_users
FROM
( SELECT DISTINCT WEEKDAY([Date]) AS wday, UserId
FROM tblName
) AS tmp
GROUP BY
wday;