要按天范围对库存进行T-SQL数据透视,可以使用日期范围内的每一天作为列,并计算每天的库存数量。下面是一个示例解决方法:
首先,创建一个包含日期和库存数量的示例表:
CREATE TABLE Inventory (
Date DATE,
Quantity INT
);
INSERT INTO Inventory (Date, Quantity)
VALUES
('2022-01-01', 10),
('2022-01-02', 15),
('2022-01-03', 12),
('2022-01-04', 18),
('2022-01-05', 20);
接下来,使用T-SQL进行数据透视,按天范围创建列,并计算每天的库存数量:
DECLARE @StartDate DATE = '2022-01-01';
DECLARE @EndDate DATE = '2022-01-05';
DECLARE @Columns NVARCHAR(MAX) = '';
DECLARE @Query NVARCHAR(MAX) = '';
-- 生成动态列名
WHILE @StartDate <= @EndDate
BEGIN
SET @Columns = @Columns + QUOTENAME(CONVERT(VARCHAR(10), @StartDate, 120)) + ',';
SET @StartDate = DATEADD(DAY, 1, @StartDate);
END
-- 移除最后一个逗号
SET @Columns = LEFT(@Columns, LEN(@Columns) - 1);
-- 构建动态查询
SET @Query = '
SELECT *
FROM (
SELECT [Date], Quantity
FROM Inventory
) AS SourceTable
PIVOT (
SUM(Quantity)
FOR [Date] IN (' + @Columns + ')
) AS PivotTable';
-- 执行动态查询
EXEC(@Query);
以上代码将生成一个按天范围透视的结果集,每一天作为列,显示每天的库存数量:
+------------+------------+------------+------------+------------+
| 2022-01-01 | 2022-01-02 | 2022-01-03 | 2022-01-04 | 2022-01-05 |
+------------+------------+------------+------------+------------+
| 10 | 15 | 12 | 18 | 20 |
+------------+------------+------------+------------+------------+
注意:上述示例假设库存表中的日期范围是连续的,并且没有重复的日期。如果存在日期缺失或重复的情况,还需要进行适当的处理。
下一篇:按天分割的聚合结果