如何计算aqua数据工作室每月每周

时间:2012-04-05 10:41:03

标签: sql-server sql-server-2005

我想问每周一次的问题。如何计算每周permonth。例如 一个月有30天和4周permonth。如果我选择1月的第二周。它将显示每周permonth的数量和月份的名称。我希望结果显示每月的月数(不是每周的每周总数)和月份的名称。谢谢。

我想知道每月的每周计算结果。

例如。一月份的

1-7 days------------   1 week
8-14 days------------  2 week
15-21 days------------ 3 week
22-28 days------------ 4 week
29 days - other------- 5 week

例如。为2月份

1-7 days------------   1 week
8-14 days------------  2 week
15-21 days------------ 3 week
22-28 days------------ 4 week

等等。

3 个答案:

答案 0 :(得分:2)

您可以在查询中使用此分组:

GROUP BY DATEADD(DAY, -(DAY(DateColumn) - 1) % 7, DateColumn)

下图显示了上述表达式的工作原理:

DateColumn  DAY(DateColumn)  DAY(…) - 1  (DAY(…)-1) % 7  DATEADD(…)
----------  ---------------  ----------  --------------  ----------
2012-04-01  1                0           0               2012-04-01
2012-04-02  2                1           1               2012-04-01
2012-04-03  3                2           2               2012-04-01
2012-04-04  4                3           3               2012-04-01
2012-04-05  5                4           4               2012-04-01
2012-04-06  6                5           5               2012-04-01
2012-04-07  7                6           6               2012-04-01
2012-04-08  8                7           0               2012-04-08
2012-04-09  9                8           1               2012-04-08
…           …                …           …               …
2012-04-13  13               12          5               2012-04-08
2012-04-14  14               13          6               2012-04-08
2012-04-15  15               14          0               2012-04-15
…           …                …           …               …
2012-04-21  21               20          6               2012-04-15
2012-04-22  22               21          0               2012-04-22
…           …                …           …               …
2012-04-28  28               27          6               2012-04-22
2012-04-29  29               28          0               2012-04-29
2012-04-30  30               29          1               2012-04-29
2012-05-01  1                0           0               2012-05-01
2012-05-02  2                1           1               2012-05-01
…           …                …           …               …

正如您所看到的,结果是一周的开始(在您定义的意义上)。

答案 1 :(得分:1)

我已经得到了答案。你刚才说:

select * from customer((DATEPART(day, [date_field] - 1) / 7 + 1 = :weeks) or (:weeks = ' '))

答案 2 :(得分:0)

你的问题还不清楚(“每周”是什么意思?每周什么?)我不确定我是否真的理解它。但我猜测,对于给定的日期,你想知道这个月的哪一周?

如果是这样,最简单的解决方案是calendar table,它存储一周的数字和一年中每个日期所需的任何其他有用信息。您可以提前填写它多年,然后您可以编写如下查询:

select WeekInTheMonth
from dbo.Calendar
where BaseDate = @SomeDate

如果这没有帮助,您需要准确显示您希望看到的输入参数和输出数据。

顺便说一句,我假设您正在使用Aqua Data Studio作为您的数据库客户端,但它与此问题无关,因此您可能需要编辑标题。