Sql Piviot数据在两个表中?
我有两个表格如下: 表1Sql Piviot数据在两个表中?,sql,sql-server,sql-server-2008,tsql,dynamic-sql,Sql,Sql Server,Sql Server 2008,Tsql,Dynamic Sql,我有两个表格如下: 表1 Columns - oppproductid, SKU, Price, Quantity, Date Values - PR1, ABCSKU1, 1000,500, 10/2013 表2 Columns - opproductid, month_1, Month_2, Month_3, Month_4...Month_36 Values - PR1, 200, 100, NULL, 200... 表是1-1。我需要为每个记录的month列中的每个值获取一
Columns - oppproductid, SKU, Price, Quantity, Date
Values - PR1, ABCSKU1, 1000,500, 10/2013
表2
Columns - opproductid, month_1, Month_2, Month_3, Month_4...Month_36
Values - PR1, 200, 100, NULL, 200...
表是1-1。我需要为每个记录的month列中的每个值获取一行,并根据不为null的月份计算日期,假设month_1是主表中的date列,因此基于样本值的理想结果集为:
oppproductid SKU Price Quantity Date Deployment
PR1 ABCSKU1 1000 500 10/2013 200
PR1 ABCSKU1 1000 500 11/2013 100
PR1 ABCSKU1 1000 500 1/2014 200
注意事项:
- 第3个月为空,因此2013年12月不会产生结果
- 第二个表中有36个月,唯一的要求是必须包含数据
- 月1始终等于第一张表上的日期
太棒了!工作得很有魅力。非常感谢。
set dateformat dmy
select
t1.oppproductid,
t1.SKU,
t1.Price,
t1.Quantity,
dateadd(month, monthno-1, convert(date, '1/' + [date])),
deployment
from table1 t1
inner join
(
select *, convert(int,substring(mth,7,2)) as monthno from table2
unpivot (deployment for mth in (month_1,month_2,month_3,month_4...)) u
) u2
on t1.oppproductid = u2.opproductid