我正在使用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]输出如下:
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我使用了一个嵌套查询来实现这一点。我的问题是,我是否可以在不使用嵌套查询的情况下实现相同的结果。我的Date Dimension表是一个包含每天日期的表。
发布于 2019-02-28 16:09:19
只需在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)PS:这是:
DATEADD(month, DATEDIFF(month, 0, [date]), 0)可以写成:
DATEADD(DAY, 1, EOMONTH([date], -1))发布于 2019-02-28 16:15:29
我们就不能用一个不同的,
SELECT DISTINCT DATEADD(month, DATEDIFF(month, 0, [date]), 0) AS [Date2]
FROM DateDimension
where [date] between '2018-07-01' and '2019-06-01'https://stackoverflow.com/questions/54920952
复制相似问题