私はそれを理解しました。誰かが2つの区切りの列を区切って同様の問題を抱えている場合は、以下のコードを使用して目的の出力を得ました.Hiveでposexplode関数を使用するのと同じ出力を得るためにSQL ServerのCross Apply関数とXMLを使用しました。
--Create test table
create table Table1 (userid varchar(max), Sku varchar(max), Qty varchar(max))
insert Table1 select 'abc', '2427022' , '3'
insert Table1 select 'abc', '1883575|2427022', '1|3'
insert Table1 select 'def', '2427022|1562336|153842' , '1|1|1'
insert Table1 select 'ghi', '2427022' , ' 3'
;WITH CTE1
AS
(
SELECT RN= Row_Number() over(Order by userid),userid,
Split.a.value('.', 'VARCHAR(100)') AS Sku
FROM
(
SELECT Userid,Sku,
CAST ('<M>' + REPLACE(sku, '|', '</M><M>') + '</M>' AS XML) AS Data
FROM Table1
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a)
)
,CTE2
AS
(
SELECT RN= Row_Number() over(Order by userid),userid,
Split.b.value('.', 'VARCHAR(100)') AS qty
FROM
(
SELECT Userid,qty,
CAST ('<M>' + REPLACE(qty, '|', '</M><M>') + '</M>' AS XML) AS Data
FROM Table1
) AS B CROSS APPLY Data.nodes ('/M') AS Split(b)
)
Select c.userid, c.Sku, d.qty
from CTE1 as c
Inner Join CTE2 as d
on c.RN =d.RN
https://stackoverflow.com/questions/5493510/turning-a-comma-separated-string-into-individual-rows – axawire
SOチュートリアルサイトまたはあなたの仕事をする皆さんのプールではありません。代わりに、問題を解決しようとしたコードで特定の質問をしてください。 https://stackoverflow.com/help/how-to-ask –
リンクに加えて、おそらく選択肢にrow_number()を追加して、skuとqtyの正しい値を組み合わせる必要があります同じ行に属しているフィールド。 – axawire