2012-04-07 46 views
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的數據。需要一個解決方案,用於使用樞軸的sql查詢

予有需要像下文中,這意味着SUM(TaxAmt)爲一組GLCode IN (244,231)和其他第二對於GLCode IN (266,274)和第三是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 
--------------------------------------------------------------- 
+2

RDBMS是什麼? SQL沒有足夠的信息。由於「pivot」,我在猜測Oracle或SQL-Server? – Ben 2012-04-07 14:16:10

+0

@Ben根據語法的MSSQL – 2012-04-07 14:20:12

+0

@vimal所以你的問題是什麼? – 2012-04-07 14:21:58

回答

4
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 
+0

Thankyou這是確切的,我想...非常感謝你... – 2012-04-09 04:23:15

+0

不客氣。如果這是你正在尋找的,你應該考慮[「接受」這個答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – 2012-04-09 06:50:48