【发布时间】:2024-01-21 18:10:01
【问题描述】:
这是我的工作查询:
DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
DECLARE @CurrentDate AS DATETIME
SET @StartDate = '2021-01-01'
SET @EndDate = GETDATE()
SET @CurrentDate = @StartDate
WHILE (@CurrentDate < @EndDate)
BEGIN
SELECT
SUM(CASE WHEN [CreatedDateTime] BETWEEN @CurrentDate AND @CurrentDate + 6 THEN 1 ELSE 0 END)
FROM Table
WHERE OwnedBy = 'Service Desk'
SET @CurrentDate = convert(varchar(30), dateadd(day,6, @CurrentDate), 101);
END
产生以下结果:
我正在尝试创建一个显示每个结果的日期范围的动态列名。
例如:
第一个结果的列名应为:“Jan 1-Jan 7”
第二个结果应该有列名:“Jan 8-Jan 14”
等等
有没有办法做到这一点?
谢谢。
【问题讨论】:
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
-
对于动态列名,您需要动态 SQL。为什么不在你的前端这样做呢?容易得多。
标签: sql-server date tsql while-loop