【问题标题】:sql query for showing all rows of a table based on id with respect to another table用于显示基于 id 相对于另一个表的表的所有行的 sql 查询
【发布时间】:2012-12-05 10:30:15
【问题描述】:

我有两张桌子。

  • 表:时间表 (SID,ORID)

  • 表:ORC (ORID,ORNAME)

我想显示所有ORNAMEs 是否分配给特定的 SID。

预期输出:

   SID   OR1 OR2 OR3 OR4
    1     1             
    2             3
    3         2

以上,SID 1 包含 ORID = 1,SID 2 包含 ORID = 3,SID 3 包含 ORID = 2。

【问题讨论】:

  • 您正在寻找数据透视表
  • 这里有一个post 以获得一个想法

标签: sql tsql sql-server-2005 pivot


【解决方案1】:

您需要的是一个支持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 Fiddle

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多