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

Dalla query precedente devo recuperare i dati per particolare gruppo di codici GL utilizzando pivot.ha bisogno di una soluzione per sql query using pivot

devo serve un risultato come il seguente, che significa SUM(TaxAmt) per un gruppo GLCode IN (244,231) e due secondi Per GLCode IN (266,274) e terzo è 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

Cosa RDBMS? SQL non è abbastanza informazioni. Sto indovinando Oracle o SQL-Server a causa del 'pivot'? – Ben

+0

@Ben Secondo la sintassi il suo MSSQL –

+0

@ vimal quindi qual è la tua domanda? –

risposta

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 

versione 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

Grazie, è esatto che voglio ... grazie mille ... –

+0

Sei il benvenuto. Se questo è quello che stavi cercando dovresti considerare ["accettare" questa risposta] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –