0

次のようなデータを返すクエリがあります。

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ではなく意味のあるものに変換する単純なクエリです。

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 に答える