我在 Sql 表中得到了两列名为"下一个计划日期"和"预期计划日期"的列。我想要的确切是组合两列,而不是作为连接,只是将它们组合在另一行下方的一行。
我已经尝试过取消透视,但它不起作用。任何建议请
选择[资产/位置],[部门名称],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
你需要取消透视而不是枢轴
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
您可以使用
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;