我有一组数据如下所示:
PatientID Custodian
17 Parent1
17 Parent2
18 Parent1
18 Parent2
18 Parent3
19 Parent1
我希望输出为:
PatientID Custodian 1 Custodian 2 Custodian 3
17 Parent1 Parent2
18 Parent1 Parent2 Parent3
19 Parent1
请为此编写SQL查询帮助。
答案 0 :(得分:0)
您可以使用PIVOT功能,但需要添加具有匹配的保管人ID的列。你可以在'custodian IN'部分使用一些动态SQL,但它可能会变得混乱。在PIVOT上有类似的东西:
CREATE TABLE #Temp
(
PatientID INT NOT NULL
,Custodian VARCHAR(10) NOT NULL
)
INSERT INTO #Temp
VALUES
(17,'Parent1')
,(17,'Parent2')
,(18,'Parent1')
,(18,'Parent2')
,(18,'Parent3')
,(19,'Parent1')
CREATE TABLE #Temp2
(
PatientID INT NOT NULL
,Parent VARCHAR(20) NOT NULL
,Custodian VARCHAR(20) NOT NULL
)
INSERT INTO #Temp2
SELECT
a.PatientID
,a.Custodian Parent
,'Custodian' + SUBSTRING(Custodian,7,10) Custodian
FROM #Temp a
SELECT *
FROM #Temp2 a (NOLOCK)
PIVOT (
MAX(Parent)
FOR Custodian IN ([Custodian1],[Custodian2],[Custodian3]))
AS ParentID
DROP TABLE #Temp
DROP TABLE #Temp2