2012-04-07 19 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 

Z powyższego zapytania muszę pobrać dane dla poszczególnych grup GLcode za pomocą Pivota.Potrzebuję jednego rozwiązania do zapytania sql za pomocą przestawnego

mam potrzebują wyniki działania, co oznacza, SUM(TaxAmt) dla jednej grupy GLCode IN (244,231) i innych sekundę dla GLCode IN (266,274) i trzecia 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

Co RDBMS? SQL nie jest wystarczającą informacją. Zgaduję Oracle lub SQL-Server ze względu na 'Pivot'? – Ben

+0

@Ben Według składni jego msSQL –

+0

@vimal, jakie jest twoje pytanie? –

Odpowiedz

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 

wersja Pivot:

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

Dziękuję, to jest dokładnie to, czego chcę ... bardzo dziękuję ... –

+0

Nie ma za co. Jeśli tego właśnie szukałeś, powinieneś rozważyć ["zaakceptowanie" tej odpowiedzi] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –

Powiązane problemy