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

Yukarıdaki sorgudan pivot kullanarak belirli GLcode grup bilgisine ait verileri almam gerekir.pivot'u kullanarak sql sorgusu için bir çözüme gereksinim duyar.

I SUM(TaxAmt) bir grup GLCode IN (244,231) ve GLCode IN (266,274) için bir başka ikinci ve üçüncü GLCode IN (231,241) olduğu anlamına gelir aşağıdaki gibi bir sonuç mi var.

--------------------------------------------------------- 
PurchaseOrderID  [244,231] [266,274] [231,241] 
--------------------------------------------------------- 
1     5678   10456  45643 
2     3456   5643   564 
3     34567   5678   4243 
4     5897   65645   7567 
--------------------------------------------------------------- 
+2

Ne RDBMS? SQL yeterli bilgi değildir. "Pivot" nedeniyle Oracle veya SQL-Server'ı tahmin ediyorum? – Ben

+0

@Ben Sözdizimine göre MSSQL –

+0

@ vimal sorusu nedir? –

cevap

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 

Pivot sürümü:

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 bu kesinlikle istiyorum ... çok teşekkür ederim ... –

+0

Bir şey değil. Eğer aradığınız şey buysa, bu cevabı ["kabul ediyor" olarak düşünmelisiniz) (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –