我在Sql表中得到了两列,分别为“下一个计划日期”和“预计的计划日期”。我想要的是将两列合并而不是仅将它们合并在另一行的下面。
我尝试了unPivot,但无法正常工作。任何建议请
选择[资产/位置],[部门名称],Future_Scheduled_Date 来自merge2_ernie 取消枢纽 ( Future_Scheduled_Date 中的[部门名称](从merge2_ernie中选择“不同的[部门名称]”) )
我的数据现在看起来像这样
**Department_Name** **Next_Schedule_Date** **Expected_Scheduled_Date**
Dept1 Aug 2019 Sep 2019
Dept1 Oct 2019 Nov 2019
Dept2 Jan 2019 Mar 2019
Dept3 Nov 2019 Jan 2020
Dept4 Apr 2019 Sep 2019
Dept5 Jun 2019 Jul 2019
我希望下面的数据是这样的
Department_Name Future_Schedule_Date
Dept1 Aug 2019
Dept1 Sep 2019
Dept1 Oct 2019
Dept1 Nov 2019
Dept2 Jan 2019
Dept2 Mar 2019
Dept3 Nov 2019
Dept3 Jan 2020
Dept4 Apr 2019
Dept4 Sep 2019
Dept5 Jun 2019
Dept5 Jul 2019
答案 0 :(得分:1)
您需要UNPIVOT而不是PIVOT
CREATE TABLE #dept
(
dept VARCHAR(5),
nextdate VARCHAR(10),
expecteddate VARCHAR(10)
)
INSERT INTO #dept(dept, nextdate, expecteddate)
VALUES
('Dept1','Aug 2019','Sep 2019'),
('Dept1','Oct 2019','Nov 2019'),
('Dept2','Jan 2019','Mar 2019'),
('Dept3','Nov 2019','Jan 2020'),
('Dept4','Apr 2019','Sep 2019'),
('Dept5','Jun 2019','Jul 2019');
-- unpivot the data into key value pairs
SELECT dept, val
FROM
(
SELECT *
from #dept
) a
UNPIVOT
(
val
FOR name IN ([nextdate],[expecteddate])
) u
答案 1 :(得分:0)
您可以使用apply
:
select Department_Name, Future_Schedule_Date
from table t cross apply
( values (Next_Schedule_Date), (Expected_Scheduled_Date)
) tt(Future_Schedule_Date)
order by Department_Name, Future_Schedule_Date;