我有两张桌子。
表:时间表 (
SID,ORID)表:ORC (
ORID,ORNAME)
我想显示所有ORNAMEs 是否分配给特定的 SID。
预期输出:
SID OR1 OR2 OR3 OR4
1 1
2 3
3 2
上面,SID1 包含ORID= SID1,2 包含ORID= SID3,3 包含ORID= 2。
我有两张桌子。
表:时间表 ( SID,ORID)
表:ORC ( ORID,ORNAME)
我想显示所有ORNAMEs 是否分配给特定的 SID。
预期输出:
SID OR1 OR2 OR3 OR4
1 1
2 3
3 2
上面,SID1 包含ORID= SID1,2 包含ORID= SID3,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 小提琴