我有两张桌子。
表:时间表 (
SID,ORID
)表:ORC (
ORID,ORNAME
)
我想显示所有ORNAME
s 是否分配给特定的 SID。
预期输出:
SID OR1 OR2 OR3 OR4
1 1
2 3
3 2
上面,SID
1 包含ORID
= SID
1,2 包含ORID
= SID
3,3 包含ORID
= 2。
我有两张桌子。
表:时间表 ( SID,ORID
)
表:ORC ( ORID,ORNAME
)
我想显示所有ORNAME
s 是否分配给特定的 SID。
预期输出:
SID OR1 OR2 OR3 OR4
1 1
2 3
3 2
上面,SID
1 包含ORID
= SID
1,2 包含ORID
= SID
3,3 包含ORID
= 2。
您需要的是一个支持任意数量的可能值的动态枢轴ORNAME
:
DECLARE @cols VARCHAR(1000) = STUFF(
(
SELECT ',['+ORNAME+']'
FROM ORC
FOR XML PATH('')
), 1, 1, '')
DECLARE @sql VARCHAR(3000) =
'
SELECT pvt.SID,
'+@cols+'
FROM Schedule a
LEFT JOIN
ORC b ON a.ORID = b.ORID
PIVOT (
MAX(b.ORID) FOR b.ORNAME IN ('+@cols+')
) pvt
ORDER BY pvt.SID'
EXEC(@sql)
这是一个SQL 小提琴