无法弄清楚如何透视和合并这些结果

时间:2012-10-24 19:54:11

标签: sql sql-server pivot

我有一个返回看起来像。

的数据的查询
PackageName  SiteLocation  Visible
Package1     SiteOne       1
Package1     SiteTwo       0
Package1     SiteFour      1
Package2     SiteThree     1

我想要的是看起来像

的数据
PackageName  SiteOne  SiteTwo  SiteThree  SiteFour
Package1     1        0        NULL       1
Package2     Null     Null     1          NULL

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

PackageName  SiteOne  SiteTwo  SiteThree  SiteFour
Package1     1        NULL     NULL       NULL
Package1     NULL     0        NULL       NULL
Package1     NULL     NULL     NULL       1
Package2     Null     Null     1          NULL

有没有办法合并网站上的数据透视表然后合并PackageName的结果?

返回此数据的查询是一个简单的查询,它只是将外键连接在一起,将SiteLocation转换为有意义的内容,而不是FK_Id

1 个答案:

答案 0 :(得分:2)

如果没有看到您的实际查询,我猜您的查询中有其他字段会破坏您的PIVOT。如果这些是查询返回的唯一字段,那么它应该正常工作:

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

请参阅SQL Fiddle with Demo

但是,如果您的搜索结果中包含其他字段,那么PIVOT将无法正常运行:

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

请参阅SQL Fiddle with Demo