Sql ms access总和日期不同,但按季度分组
需要以下查询的帮助吗 此时显示按年度季度分组的工作时间的用户列表。 我还想总结一下工作日数——问题是可以有不止一个工作日 行,因此onsitedate上的总和不正确。 我不能按天分组,因为结果需要按年度季度显示 sql 如果需要更多信息和TQ,请告诉我 更新 如前所述,我应该在sitedate行输入中使用COUNTSql ms access总和日期不同,但按季度分组,sql,ms-access,Sql,Ms Access,需要以下查询的帮助吗 此时显示按年度季度分组的工作时间的用户列表。 我还想总结一下工作日数——问题是可以有不止一个工作日 行,因此onsitedate上的总和不正确。 我不能按天分组,因为结果需要按年度季度显示 sql 如果需要更多信息和TQ,请告诉我 更新 如前所述,我应该在sitedate行输入中使用COUNT SELECT username, DatePart ('q', [onsitedate]) AS [qtr], SUM(onsitehours), **COUNT(
SELECT
username,
DatePart ('q', [onsitedate]) AS [qtr],
SUM(onsitehours),
**COUNT(onsitedate)**
FROM
但是,如果同一日期存在两条记录,则我希望计数为1
示例数据如下:
username onsitedate onsitehours
-----------------------------------------------
bob 01/09/2013 10
bob 01/09/2013 2
fred 01/09/2013 12
jim 01/09/2013 10
jim 02/09/2013 5
所需rs
username qtr onsitedate_count onsitehours_sum
---------------------------------------------------------
bob 3 1 12
fred 3 1 12
jim 3 2 15
如您所见,尽管2013年9月1日有两项记录记录显示bob的现场日期仍然为1
因为他们是同一天
也试着按照这样的方式,把日子排在第一位,但没有快乐
GROUP BY tech_name, DatePart('d',[on_site_date]), DatePart('q',[on_site_date])
只是不要在现场约会。如果我正确理解你的问题
SELECT
a.username,
DatePart ('q', a.[onsitedate]) AS [qtr],
COUNT(b.[onsitedate]) onsitedate_count,
SUM(a.onsitehours)
FROM clocktable a
join (SELECT username, [onsitedate])
FROM clocktable GROUP BY username,[onsitedate]) b
on a.username = b.username
WHERE a.onsitedate BETWEEN #2013-01-01# AND #2013-12-31#
GROUP BY a.username, DatePart('q',a.[onsitedate]), b.onsitedate_count
ORDER BY a.username, DatePart('q',a.[onsitedate])
首先创建一个查询,对用户名和onsitedate的每个组合的onsitehours求和 选择 用户名, 日期部分'q',[onsitedate]作为[qtr], 在现场, SUMonsitehours作为SUMonsitehours 从…起 时钟表 其中,2013年1月1日至2013年12月31日期间的现场日期 按用户名、DatePart'q'、[onsitedate]、onsidedate分组; 然后将其用作子查询,对用户名和qtr的每个组合计算日期和小时数 选择 sub.username, sub.qtr, Countsub.onsitedate作为onsitedate\u计数, Sumsub.SumOfonsitehours作为现场小时数的总和 从…起 选择 用户名, 日期部分'q',[onsitedate]作为[qtr], 在现场, SUMonsitehours作为SUMonsitehours 从…起 时钟表 其中,2013年1月1日至2013年12月31日期间的现场日期 按用户名、日期部分'q'、[onsitedate]、onsitedate分组 作为子 按sub.username分组,sub.qtr 按sub.username、sub.qtr订购;
使用时钟表样本数据,该查询将在Access 2007中返回您请求的输出。您是否尝试使用COUNTonsitedate而不是SUMonsitedate?您好,COUNT是我应该使用的,但是这会产生错误的结果-如果同一天存在两条记录,则总数将为2,我希望计数为1-更新了问题HI-如果我不计算SiteDate,那么我不会计算工作天数ps-示例应该是计数而不是总和道歉使用子查询。我已经编辑了查询。见上文。希望如此。如果您投入精力修复该查询中的语法错误,您将发现bob在SiteDate_count=2时返回。感谢@HansUp指出这一点。我想我不应该急着说太多:不客气,但最新版本仍然无法在Access中运行。以下版本在Access 2007中运行时没有语法错误,但在逻辑上仍然存在缺陷,因为它对用户名bob计算了两次相同的日期2013年9月1日。。。
SELECT
a.username,
DatePart ('q', a.[onsitedate]) AS [qtr],
COUNT(b.[onsitedate]) onsitedate_count,
SUM(a.onsitehours)
FROM clocktable a
join (SELECT username, [onsitedate])
FROM clocktable GROUP BY username,[onsitedate]) b
on a.username = b.username
WHERE a.onsitedate BETWEEN #2013-01-01# AND #2013-12-31#
GROUP BY a.username, DatePart('q',a.[onsitedate]), b.onsitedate_count
ORDER BY a.username, DatePart('q',a.[onsitedate])