sql - 在 Access 中使用 Partition() 时遇到问题

标签 sql ms-access

我有一个包含以下字段的表:resourceIDwork_datestringValue

我正在尝试构建一个 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/

相关文章:

java - 插入数据时出现问题

ms-access - 了解 VBA/Access 源代码

ms-access - 连续形式只引用第一条记录

PHP ("SELECT * FROM Table WHERE ... AND ...")

php - 一次获取一行并将值放入每个 <td>

SQL Count 使用 LIMIT 时的总行数

ms-access - Now() 函数与时间修剪

sql - "OBJECT_NAME"函数不再返回对象的名称

c# - 从 Sharepoint 中的数据库快速读取 SQL 以获取设置值的最佳实践

arrays - 如何在 VBA 中将数据从 Access 表复制到数组?