我有两列,我想将两者结合起来,而不是通过 concat 只是将一行组合在另一行下面
I have two columns and I want to combine both not by concat just combining one row below the other
我在 Sql table 中有两列名为 'Next Schedule Date' 和 'Expected Scheduled Date'。我真正想要的是将两列组合起来,而不是将它们组合成一行,只是将它们组合在另一行下方。
我试过 unPivot 但它不起作用。有什么建议请
select [资产/位置]、[部门名称]、Future_Scheduled_Date
来自 merge2_ernie
逆轴
(
Future_Scheduled_Date
对于 [Department Name] in (select Distinct [Department Name] from 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
您需要 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
您可以使用 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;
我在 Sql table 中有两列名为 'Next Schedule Date' 和 'Expected Scheduled Date'。我真正想要的是将两列组合起来,而不是将它们组合成一行,只是将它们组合在另一行下方。
我试过 unPivot 但它不起作用。有什么建议请
select [资产/位置]、[部门名称]、Future_Scheduled_Date 来自 merge2_ernie 逆轴 ( Future_Scheduled_Date 对于 [Department Name] in (select Distinct [Department Name] from 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
您需要 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
您可以使用 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;