0

我有两张桌子。

  • 表:时间表 ( 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。

4

1 回答 1

0

您需要的是一个支持任意数量的可能值的动态枢轴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 小提琴

于 2012-12-18T09:12:41.530 回答