【发布时间】:2021-08-16 06:34:50
【问题描述】:
我正在尝试转换此日期列表以用作列标题。示例查询已针对 12 个日历月进行了简化注意:实际日期范围最终将总共为 240 个月。我对 PIVOT 功能不太了解
DROP TABLE if exists #nbrs
DROP TABLE if exists #nbr
DECLARE @StartDate DATE = '20210101'
DECLARE @EndDate DATE = '20211201'
SELECT DATEADD(MONTH, nbr - 1, @StartDate) AS DateRange
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
FROM sys.columns c
) nbrs
WHERE nbr - 1 <= DATEDIFF(MONTH, @StartDate, @EndDate)
当前输出:
| DateRange |
|---|
| 2021-01-01 |
| 2021-02-01 |
| 2021-03-01 |
| 2021-04-01 |
| 2021-05-01 |
| 2021-06-01 |
| 2021-07-01 |
| 2021-08-01 |
| 2021-09-01 |
| 2021-10-01 |
| 2021-11-01 |
| 2021-12-01 |
期望的输出:
| 2021-01-01 | 2021-02-01 | 2021-03-01 |
|---|---|---|
【问题讨论】:
-
只有动态sql
-
谢谢@KenWhite,这里比较新。感谢指导。
标签: sql sql-server date tsql pivot