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

从上面的查询中,我必须使用 pivot 检索特定 GLcode 组的数据。

我需要一个类似下面的结果,这意味着SUM(TaxAmt)一个组GLCode IN (244,231)和另一个第二个 ForGLCode IN (266,274)和第三个 is 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 回答