我有一个包含以下字段的表:resourceID
、work_date
、stringValue
我正在尝试构建一个 Access 查询,该查询将显示给定日期范围内每周出现的具有给定 stringValue
的不同 resourceID
数字的计数。使用 partition()
似乎是最简单的方法,但是,当我使用以下查询时:
select partition([work_date],#6/6/2011#,#9/4/2011#,7),stringValue,
count(resourceID) from
(select distinct resourceID,work_date,stringValue from myTable) as subQuery
group by partition([work_date],#6/6/2011#,#9/4/2011#,7), stringValue
那么我有两个问题:
-我的日期最终格式化为整数,例如:
:40699
40700:40706
40784:40790
而我希望它们显示为,例如 6/6/2011:6/12/2011
(我也不想要 :40699
值)
-resourceID
如果出现在多个工作日,则每周会被多次计数;我只是希望每个 stringValue
如果它在那一周出现的话,就被计算一次。我认为 distinct
限定符可以实现这一点,但事实并非如此。
编辑:我通过将分区放入子查询中解决了多余的 resourceID
计数,如下所示:
select datePartition,stringValue,count(ID)
from (select partition() as datePartition, stringValue, ID
from (select distinct stringvalue,ID,work_date))
group by datePartition,stringvalue
然后从该子查询中提取count(ID)
。但仍然无法弄清楚日期格式。
最佳答案
我看到了 2 个解决方案,但我认为没有理由在这里使用 Partition() !
解决方案 1:使用 SELECT Format([DateFact];"ww-yyyy") as weekOfYear
将返回周数和年份:适合按周分组,显示周数。
解决方案 2:使用 SELECT [DateFact]-Weekday([datefact]+1) as weekStarting
将返回一周的第一天作为格式良好的日期:适合按周分组,显示周开始日。
关于sql - 在 Access 中使用 Partition() 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7393556/