0

我有一个查询返回看起来像的数据。

包名站点位置可见
Package1 SiteOne 1
包 1 站点二 0
Package1 SiteFour4 1
Package2 SiteThree 1

我想要的是看起来像的数据

包名站点一站点二站点三站点四
包 1 1 0 NULL 1
包 2 空 空 1 空

我在网站上做了一个支点,但我得到的结果看起来像

包名站点一站点二站点三站点四
Package1 1 NULL NULL NULL
包 1 NULL 0 NULL NULL
包 1 NULL NULL NULL 1
包 2 空 空 1 空

有没有办法在现场合并数据透视然后合并 PackageName 的结果?

返回此数据的查询是一个简单的查询,它只是将外键连接在一起以将 SiteLocation 变成有意义的东西,而不是 FK_Id

4

1 回答 1

2

在没有看到您的实际查询的情况下,我猜您的查询中有其他字段会破坏您的PIVOT. 如果这些是您的查询返回的唯一字段,那么它应该可以工作:

select *
from
(
  select packagename,
    sitelocation,
    visible
  from yourquery
) x
pivot
(
  max(visible)
  for sitelocation in ([SiteOne], [SiteTwo], [SiteThree], [SiteFour])
) p

请参阅带有演示的 SQL Fiddle

但是,如果您的结果中包含其他字段,PIVOT则将无法正常工作:

select *
from
(
  select packagename,
    sitelocation,
    visible, 
    breakit
  from yourquery
) x
pivot
(
  max(visible)
  for sitelocation in ([SiteOne], [SiteTwo], [SiteThree], [SiteFour])
) p

请参阅带有演示的 SQL Fiddle

于 2012-10-24T20:11:44.757 回答