use*_*933 0 sql t-sql sql-server group-by date
我正在使用SQL Server 2014,我有以下T-SQL查询,它从Date Dimension表中检索每月第一天的日期(基于我的过滤器):
SELECT * FROM (
SELECT DATEADD(month, DATEDIFF(month, 0, [date]), 0) AS [Date2]
FROM DateDimension
WHERE [date] BETWEEN '2018-07-01' AND '2019-06-01'
) x
GROUP BY x.[Date2]
Run Code Online (Sandbox Code Playgroud)
输出如下:
Date2
2018-07-01 00:00:00.000
2018-08-01 00:00:00.000
2018-09-01 00:00:00.000
2018-10-01 00:00:00.000
2018-11-01 00:00:00.000
2018-12-01 00:00:00.000
2019-01-01 00:00:00.000
2019-02-01 00:00:00.000
2019-03-01 00:00:00.000
2019-04-01 00:00:00.000
2019-05-01 00:00:00.000
2019-06-01 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我使用嵌套查询来实现这一点.我的问题是我是否可以在不使用嵌套查询的情况下获得相同的结果.我的Date Dimension桌子是一张每日日期的桌子.
只需重复里面的日期计算部分GROUP BY:
SELECT DATEADD(month, DATEDIFF(month, 0, [date]), 0) AS [Date2]
FROM DateDimension
WHERE [date] between '2018-07-01' and '2019-06-01'
GROUP BY DATEADD(month, DATEDIFF(month, 0, [date]), 0)
Run Code Online (Sandbox Code Playgroud)
PS:这个:
DATEADD(month, DATEDIFF(month, 0, [date]), 0)
Run Code Online (Sandbox Code Playgroud)
可以写成:
DATEADD(DAY, 1, EOMONTH([date], -1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |