访问查询(SQL)以返回按WEEKS排序(按分组)的记录

1 sql ms-access

问候SQL大师,

我不知道你是否可以帮助我,但我会尝试.我有几个按年份分组的大型数据库(每年在不同的数据库中).我希望能够比较从一年到下一年的特定周的值.例如,"告诉我2008年第17周与2002年第17周."

我有以下几周的定义,理想情况下我会使用:

  1. 每年只有52周,每周7天(仅需364天),
  2. 第一周的第一天从1月2日开始 - 这意味着我们不使用1月1日的数据,并且
  3. 在闰年,第一周的第一天ALSO从1月2日开始加上我们跳过2月29日.

有任何想法吗?

提前致谢.

Pra*_*gus 5

最好避免创建表,因为这样您必须更新并维护它以使您的查询起作用.

DatePart('ww',[myDate])会给你一周的号码.你可能会遇到一些问题虽然决定哪一周属于哪一年 - 例如,如果2003年1月1日是星期三那么这周是属于2002年的第52周还是2003年的第1周?您的会计部门将有一周中的某一天即您周末(通常是周六).我通常只选择有最多日子的年份.DatePart将始终将第一周计为1,并且在上周的示例中将其计为53.您可能无关紧要.您可以为每年创建查询

SELECT DatePart('ww',[myDate]) as WeekNumber,myYearTable.* as WeekNumber 
FROM myYearTable
Run Code Online (Sandbox Code Playgroud)

然后加入查询以获取您的数据.如果一张桌有52周,一张有53张(大多数会显示为53张),你会在年底失去几天.或者你可以在你的周末做这件事 - 这总是给你周六,这将推迟到下一年的一周.

(7-Weekday([myDate]))+[myDate]  
Run Code Online (Sandbox Code Playgroud)

然后

DatePart('ww',(7-Weekday([myDate]))+[myDate]) 
Run Code Online (Sandbox Code Playgroud)

希望有所帮助