2012-04-07 4 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クエリの1つのソリューションが必要です

I 1つのグループGLCode IN (244,231)ためSUM(TaxAmt)を意味し、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

? SQLは十分な情報ではありません。私はピボットのためOracleやSQL Serverを推測していますか? – Ben

+0

@Ben構文によると、MSSQL –

+0

@vimalだからあなたの質問は何ですか? –

答えて

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 

ピボットバージョン:どのようなRDBMS

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

ありがとうございましたこれは私が欲しいと思っています...あなたに大変感謝しています... –

+0

あなたは大歓迎です。これがあなたが探していたものなら、[この回答を受け入れる]ことを検討すべきです(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 –