SQL Server 如何使用动态透视执行多个联接?

ttygqcqt  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(161)

有很多关于如何处理透视数据的帖子(hereherehere)。但是,我找不到任何关于对透视数据执行多个连接的帖子,特别是对透视返回的动态列
例如,我可以使用类似的查询生成下面的结果(我已经将列设置为非动态的,但也可以是动态的):
第一个
带支撑台
第一次
由于列是动态ID,我找不到如何在透视表上执行联接。我希望最终的数据集返回值,这些值从一个表中提取列值,从另一个表中提取表值。实现此目的的最佳方法是什么?

JobId | JobTitle  | Location        | Type        | Source  | Branch
--------------------------------------------------------------------
1     | Janitor   | North Carolina  | Retail      | etc...  | etc...
2     | Cook      | South Carolina  | Commercial  | etc...  | etc...
ycl3bljg

ycl3bljg1#

在透视表之前先使用子查询连接表

select *
from   (
           select cj.JobID, cj.JobTitle, cf.CustomFieldName, cflv.CustomFieldValue
           from   ContractJobs cj
                  inner join ContractJobCustomFields cjcf 
                          on cj.JobID              = cjcf.JobID
                  inner join CustomFields cf 
                          on cjcf.CustomFieldId    = cf.ID
                  inner join CustomFieldListValues cflv 
                          on cjcf.CustomFieldValue = cflv.ID
                         and cjcf.CustomFieldId    = cflv.CustomFieldId 
       ) j
      PIVOT
      (
           MAX (CustomFieldValue) 
           FOR CustomFieldNamein ([Location], [Type], [Source], [Branch])
      ) p

相关问题