表資料如下所示:
輸入 :
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)
提前致謝 !!
uj5u.com熱心網友回復:
我正在使用 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328786.html
標籤:sql sql-server 天蓝色 加入
上一篇:SQL查詢回傳錯誤的結果
