SQL pivot tablo sorunu

metcip
05-12-2011, 16:49   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
38 mesaj
Kayıt Tarihi:Kayıt: Mar 2005

selam,
aşağıda kendi veri tabanım da (iki veri tabanı) yazmış olduğum çalışan ama tam olarak istediğim sonucu vermeyen bir sorgu var:
select
ŞUBE
,[Red - İnfo],[Ok - Ödendi],[Red - Risk]
,[Ok - İptal Müşteri],[Ok - İptal Rakip],[Ok - İptal Fiyat]
,[İstihbarata Alınmadı],[Red - Evrak],[Ok - İptal Evrak]
,[Müşteri İptal],[Ok - İptal Geç],[Fiyat İptal], Ok
,[Ok - Sonra],[İstihbarata Yollandı],[Evrak Bekleniyor]
from
(SELECT
KS.ADI AS 'ŞUBE'
,CAST((CASE WHEN D.DurumID=1 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Evrak Bekleniyor]
,CAST((CASE WHEN D.DurumID=2 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[İstihbarata Yollandı]
,CAST((CASE WHEN D.DurumID=3 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok]
,CAST((CASE WHEN D.DurumID=4 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - Sonra]
,CAST((CASE WHEN D.DurumID=5 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - Ödendi]
,CAST((CASE WHEN D.DurumID=6 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - İptal Rakip]
,CAST((CASE WHEN D.DurumID=7 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - İptal Fiyat]
,CAST((CASE WHEN D.DurumID=8 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - İptal Evrak]
,CAST((CASE WHEN D.DurumID=9 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - İptal Geç]
,CAST((CASE WHEN D.DurumID=10 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Ok - İptal Müşteri]
,CAST((CASE WHEN D.DurumID=11 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Red - İnfo]
,CAST((CASE WHEN D.DurumID=12 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Red - Evrak]
,CAST((CASE WHEN D.DurumID=13 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Red - Risk]
,CAST((CASE WHEN D.DurumID=14 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Müşteri İptal]
,CAST((CASE WHEN D.DurumID=15 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[Fiyat İptal]
,CAST((CASE WHEN D.DurumID=16 THEN (SUM(D.DurumID)) ELSE 0 END)AS varchar)[İstihbarata Alınmadı]
FROM EFWEB.dbo.Talep T (NOLOCK)
full outer JOIN EFWEB.dbo.TalepDurum D (NOLOCK) ON D.DurumID = T.DurumID full outer JOIN EFWEB.dbo.SystemUser SU (NOLOCK) ON SU.UserID = T.UserID full outer JOIN ORION.dbo.[KART_SUBE] KS (NOLOCK) ON KS.LOGICALREF = SU.SubeRef
where KS.ADI IS NOT NULL GROUP BY KS.ADI,D.DurumID
)a
group by
ŞUBE
,[Evrak Bekleniyor],[Fiyat İptal],[İstihbarata Alınmadı],[İstihbarata Yollandı],[Müşteri İptal], Ok,[Ok - İptal Evrak],[Ok - İptal Fiyat],[Ok - İptal Geç],[Ok - İptal Müşteri],[Ok - İptal Rakip]
,[Ok - Ödendi],[Ok - Sonra],[Red - Evrak],[Red - İnfo],[Red - Risk]
order by
[Red - İnfo]desc,[Ok - Ödendi]desc,[Red - Risk]desc,[Ok - İptal Müşteri]desc,[Ok - İptal Rakip]desc,[Ok - İptal Fiyat]desc,[İstihbarata Alınmadı]desc
,[Red - Evrak]desc,[Ok - İptal Evrak]desc,[Müşteri İptal]desc,[Ok - İptal Geç]desc,[Fiyat İptal]desc, Ok desc,[Ok - Sonra]desc,[İstihbarata Yollandı]desc,[Evrak Bekleniyor]desc

sorgunun sonucunun bir kısmı aşağıdaki gibidir:

ŞUBE        Red - İnfo        Ok - Ödendi        Red - Risk        Ok - İptal Müşteri        Ok - İptal Rakip        Ok - İptal Fiyat        İstihbarata Alınmadı        Red - Evrak        Ok - İptal Evrak        Müşteri İptal        Ok - İptal Geç        Fiyat İptal        Ok        Ok - Sonra        İstihbarata Yollandı        Evrak Bekleniyor
BURSA        5610        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
KARTAL        22528        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
İKİTELLİ        20064        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
Merkez        14542        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
BAYRAMPAŞA        12936        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
ANKARA        11440        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0
İKİTELLİ        0        9340        0        0        0        0        0        0        0        0        0        0        0        0        0        0
ANKARA        0        6415        0        0        0        0        0        0        0        0        0        0        0        0        0        0
BAYRAMPAŞA        0        5215        0        0        0        0        0        0        0        0        0        0        0        0        0        0
Merkez        0        5010        0        0        0        0        0        0        0        0        0        0        0        0        0        0
BURSA        0        3175        0        0        0        0        0        0        0        0        0        0        0        0        0        0
KARTAL        0        10080        0        0        0        0        0        0        0        0        0        0        0        0        0        0
KARTAL        0        0        3497        0        0        0        0        0        0        0        0        0        0        0        0        0
İKİTELLİ        0        0        3081        0        0        0        0        0        0        0        0        0        0        0        0        0
ANKARA        0        0        3003        0        0        0        0        0        0        0        0        0        0        0        0        0
Merkez        0        0        2223        0        0        0        0        0        0        0        0        0        0        0        0        0
BAYRAMPAŞA        0        0        1625        0        0        0        0        0        0        0        0        0        0        0        0        0
BURSA        0        0        1183        0        0        0        0        0        0        0        0        0        0        0        0        0

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
benim sorunum şöyle:
yukarıdaki tablonun aşağıdaki gibi görünmesini istiyorum: (aşağıdaki excel pivot tablo ile yapılmıştır)

ŞUBE        Toplam Red - İnfo        Toplam Ok - Ödendi        Toplam Red - Risk        Toplam Ok - İptal Müşteri        Toplam Ok - İptal Rakip        Toplam Ok - İptal Fiyat        Toplam İstihbarata Alınmadı        Toplam Red - Evrak        Toplam Ok - İptal Evrak        Toplam Müşteri İptal        Toplam Ok - İptal Geç        Toplam Fiyat İptal        Toplam Ok        Toplam Ok - Sonra        Toplam İstihbarata Yollandı        Toplam Evrak Bekleniyor
ANKARA        11726        6605        3133        2320        2496        84        176        96        96        224        9        0        6        12        2        2
BAYRAMPAŞA        13266        5370        1651        1240        678        203        1520        192        512        224        144        0        33        8        6        0
BURSA        5896        3245        1222        920        396        343        32        228        56        154        45        0        6        4        0        0
İKİTELLİ        20548        9495        3146        2160        492        1386        96        336        720        504        72        0        12        12        12        0
KARTAL        23067        10270        3640        2800        84        1638        160        240        224        378        279        30        30        4        4        0
Merkez        15114        5205        2288        1660        756        1176        1888        1920        128        210        63        225        33        32        4        3
Genel Toplam        89617        40190        15080        11100        4902        4830        3872        3012        1736        1694        612        255        120        72        28        5

yukarıdaki SQL kodunda PIVOT tablo da kullandım ama bir türlü istediğim hale getiremedim. (sıfırlar olamadan sadece gerekli değerler gelsin)
benim istediğim sonucu verebilecek kod yapısını bilen var mı?
tercihim benim kodun üzerinden bir değişiklik le sonuca gidebilmek ama işe yarayan başka yöntemler bilen varsa lütfen yardımcı olsun .
teşekkürler
metin