Sorum:
case when ile basit bir tablo oluşturabiliriz;saat bazında birimlerin sayısını tablo biçiminde gösterelim;
tablolar aşağıdaki gibi ;
'birimler' tablosu:
birim_kodu ...... birim_adi
----------- -------------
100200 ......... dahiliye
100250 ......... cildiye
100305 ......... psikiyatri
'muayene' tablosu:
tarih .............. birim
---------- --------------
18.05.2008 08:25:10........ 100200
18.05.2008 08:32:00 ....... 100200
18.05.2008 09:08:45 ....... 100250
18.05.2008 10:15:20 ....... 100305
18.05.2008 10:40:10 ....... 100305
18.05.2008 10:53:02 ....... 100250
----------------------------- ---------
dikkat edilmesi gereken nokta; 'birimler' tablosundaki birim adları sorgu sonucu çıkacak tablomuzda alan isimleri olarak çıkacak ve 'muayene' tablosundaki o birimin o tarihe ait toplam kayıt sayısı sorgu sonucu çıkacak tablomuzda olacak.
select tarih,count(*) --------------
from birimler b join muayene m on(b.birim_kodu=m.birim)
group by m.tarih
acaba nasıl bir sql sorgusu yazılmalı?
Çözüm Yolu:
SELECT TO_CHAR(M.TARIH,'HH24') AS MUAYENE_SAATI,
count(case when M.BIRIM = '100200' then 1 end) as DAHILIYE,
count(case when M.BIRIM = '100250' then 1 end) as CILDIYE,
count(case when M.BIRIM = '100305' then 1 end) as PSIKIYATRI
FROM MUAYENE M JOIN BIRIMLER B ON(M.BIRIM=B.BIRIM_KODU)
WHERE M.BIRIM IN('100200','100250','100305')
AND M.TARIH BETWEEN :T1 AND :T2
GROUP BY TO_CHAR(M.TARIH,'HH24')
ORDER BY TO_CHAR(M.TARIH,'HH24')
tablomuz aşağıdaki gibi satır ve sütunlardan oluşur:
MUAYENE_SAATI.......DAHILIYE ......CILDIYE.......PSIKIYATRI
----------------------- -------------- ------------- -----------------
08:00-09:00 ............ 2 ............ 0 ................ 0
09:00-10:00 ............ 0 ............ 1 ................ 0
10:00-11:00 ............. 0 ............ 1 ............... 2
07 Ağustos 2008 Perşembe
Kaydol:
Kayıt Yorumları (Atom)
0 yorum:
Yorum Gönder