我有两个桌子
[stg]。[VBAP]
SELECT distinct [VBELN]
,[POSNR]
FROM [stg].[VBAP]
VBELN POSNR
0180011720 000010
我还有第二张表VBPA
SELECT [VBELN]
,[POSNR]
,[PARVW]
,[KUNNR]
FROM [stg].[VBPA]
VBELN POSNR PARVW KUNNR
0180011720 000000 AG 0000506980
0180011720 000000 RE 0000506980
0180011720 000000 RG 0000506980
0180011720 000000 WE 0000506980
0180011720 000000 ZF 0000106790
0180011720 000000 ZU 0000505497
0180011720 000010 ZF 0000108579
0180011720 000010 ZU 0000506980
我需要在两个表之间创建一个数据透视表,以得到例如结果 例如,对于PARVW ='ZU',我有两个[KUNNR]值,当Posn <> 0
时,我必须使用该值
我尝试
with VBPA_CTE ([VBELN],KUNNR,POSNR,PARVW,id)
as(
Select T3.[VBELN],T3.KUNNR ,T3.POSNR ,T3.PARVW
,row_number() over (partition by [PARVW] order by [POSNR] desc )as id
from (
SELECT distinct T1.[VBELN]
,T1.[POSNR]
,T2.[PARVW]
,T2.[KUNNR]
FROM [stg].[VBAP] T1
LEFT JOIN ( select [VBELN]
,[POSNR]
,[PARVW]
,[KUNNR]
FROM [stg].[VBPA]) T2
ON T1.[VBELN]=T2.[VBELN]) T3
where T3.[VBELN] = '0180011720 '
)
SELECT [VBELN]
,[POSNR]
,[AG]
,[RE]
,[RG]
,[WE]
,[ZU]
FROM VBPA_CTE
PIVOT (
max(VBPA_CTE.[KUNNR])
FOR VBPA_CTE.[PARVW] IN ([AG],[RE],[RG],[WE],[ZU])
) p
where id=1
当[POSNR] <> 0时,我不知道如何链接两个表以及如何使用该条件?
答案 0 :(得分:0)
尝试一下:
WITH VBPA_CTE AS
(
SELECT [VBELN]
,[POSNR]
,[PARVW]
,[KUNNR]
FROM [stg].[VBPA]
WHERE [POSNR] <> '000000'
)
SELECT [VBELN]
,[POSNR]
,[AG]
,[BP]
,[PY]
,[SH]
,[ZU]
FROM VBPA_CTE
PIVOT (
max(VBPA_CTE.[KUNNR])
FOR VBPA_CTE.[PARVW] IN ([AG],[BP],[PY],[SH],[ZU])
) p