1.源数据
SELECT *
FROM #OrderPlanPrint;
2.列转行后的数据
SELECT tt.订单号,
tt.物料代码,
tt.物料名称,
tt.物料规格,
tt.订单数量,
tt.生产计划,
tt.TODAY,
tt.开始时间
INTO #OrderPlanPrint1
FROM #OrderPlanPrint
UNPIVOT
(
TODAY
FOR 生产计划 IN (数量, 派工号)
) tt;
SELECT *
FROM #OrderPlanPrint1;
3.用循环生成时间列
-------------------------------------------------------------------------------------
declare @starttime datetime,@endtime datetime,@sql varchar(2000)
set @starttime = CONVERT(VARCHAR(100), GETDATE(), 23);--起始时间
set @endtime = CONVERT(VARCHAR(100), GETDATE() + 7, 23);--结束时间
set @sql = 'SELECT * ';--需要查询什么字段在这里拼装
while @starttime < @endtime
begin
set @sql = @sql +', CASE WHEN 开始时间='''+Convert(Varchar(100),@starttime,23)+''' THEN TODAY END AS '+''''+Convert(Varchar(100),@starttime,23)+''''
SET @starttime = @starttime+1
END
set @sql = @sql+' from #OrderPlanPrint1'--其他查询条件在这里拼装
exec(@sql) --执行SQL
print @sql --打印SQL