5
select PurchaseOrderID
     , [244,231] as FirstEmp
     , [266,274] as secondEmp
     , [231,241] as ThirdEmp 
  from ( select PurchaseOrderID, EmployeeID, TaxAmt
           from Purchasing.PurchaseOrderHeader 
          Where EmployeeID IN (244, 231, 266, 274, 241)
                ) SourceTable
 PIVOT (
   SUM(TaxAmt)
   FOR EmployeeID IN([244,231],[266,274],[231,241])
   ) AS PVT

上記のクエリから、ピボットを使用してグループ単位で特定の GLcode のデータを取得する必要があります。

次のような結果が必要です。これはSUM(TaxAmt)、あるグループGLCode IN (244,231)と他の 2 番目のグループGLCode IN (266,274)と 3番目のグループが であることを意味しGLCode IN (231,241)ます。

---------------------------------------------------------
PurchaseOrderID     [244,231]    [266,274]    [231,241]
---------------------------------------------------------
1                    5678          10456        45643
2                    3456          5643          564
3                    34567         5678          4243
4                    5897          65645         7567
---------------------------------------------------------------
4

1 に答える 1

5
select PurchaseOrderID,
       sum(case when EmployeeID in (244, 231) then TaxAmt end) as "244,231",
       sum(case when EmployeeID in (266, 274) then TaxAmt end) as "266,274",
       sum(case when EmployeeID in (231, 241) then TaxAmt end) as "231,241"
from PurchaseOrderHeader
where EmployeeID in(244, 231, 266, 274, 241) 
group by PurchaseOrderID

ピボット バージョン:

select PurchaseOrderID,
       [244]+[231] as "244,231",
       [266]+[274] as "266,274",
       [231]+[241] as "231,241"
from
  (
    select EmployeeID, TaxAmt, PurchaseOrderID
    from PurchaseOrderHeader
    where EmployeeID in(244, 231, 266, 274, 241) 
  ) as P1
pivot
  (
    sum(TaxAmt) for EmployeeID in ([244],[231],[266],[274],[241])
  ) as P2
于 2012-04-07T15:28:56.157 に答える