[英]Split the table and perform joining without common column
表數據如下所示:
輸入 :
version value code type year
PMS 0.00 01 HOURS 2006
000 312.00 01 HOURS 2006
000 0.00 04 HOURS 2006
PMS 0.00 01 NON STOCK 2006
000 835.00 01 NON STOCK 2006
000 835.00 04 NON STOCK 2006
000 0.00 04 HOURS 2007
我需要根據代碼(01 和 04)拆分表格並獲取相應的數據,然后加入兩個結果。 所以我的輸出應該如下所示
預期產出:
version value code type year version value code type year
PMS 0.00 01 HOURS 2006 000 0.00 04 HOURS 2006
000 312.00 01 HOURS 2006 000 835.00 04 NON STOCK 2006
PMS 0.00 01 NON STOCK 2006 000 0.00 04 HOURS 2007
000 835.00 01 NON STOCK 2006 null null null null null
我按照這篇文章嘗試了 row_num 方法How join two tables using SQL without a common column
但我的輸出是這樣的:
version value code type year version value code type year
PMS 0.00 01 HOURS 2006 000 0.00 04 HOURS 2006
000 312.00 01 HOURS 2006 000 835.00 04 NON STOCK 2006
我正在使用 Azure 數據塊(SQL-Server)
提前致謝 !!
我正在使用 SQL Server,所以我認為這適用於數據塊實現。
基本上我創建了 2 個派生表(我寫了 2 個查詢來給出每個代碼的 row_number 值),然后對這些表進行左連接以給出與您的樣本匹配的結果
declare @input table (version nvarchar(max), value nvarchar(max), code nvarchar(max), type nvarchar(max), year int);
insert @input (version, value, code, type, year)
values
('PMS', '0.00', '01', 'HOURS', 2006),
('000', '312.00', '01', 'HOURS', 2006),
('000', '0.00', '04', 'HOURS', 2006),
('PMS', '0.00', '01', 'NON STOCK', 2006),
('000', '835.00', '01', 'NON STOCK', 2006),
('000', '835.00', '04', 'NON STOCK', 2006),
('000', '0.00', '04', 'HOURS', 2007)
select *
from @input; /*original data*/
select *
from /*desired output*/
(
select ROW_NUMBER() over(order by code) as id, *
from @input
where code = '01'
) a
left join
(
select ROW_NUMBER() over(order by code) as id, *
from @input
where code = '04'
) b on a.id = b.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.