Query sorgusu dikey bilgiden yatay sonuç ...
Query sorgusu dikey bilgiden yatay sonuç ...
Merhaba
Başlık bir garip oldu galiba ama aklıma böyle geldi.
Burda yapmak istediğim aşağıdaki gibi veri girilmiş bir tablom var.
TARIH MAKINA ÜRETİM
------------- --------- ----------
01.02.2004 H1 250
01.02.2004 H2 350
01.02.2004 V1 300
01.02.2004 V2 200
02.02.2004 H1 300
02.02.2004 H2 400
02.02.2004 V1 250
şeklinde uzayıp giden bir tablo var ben buna güre şu şekilde bir rapor alıyorum ama bu işlem için geçici bir tablo oluşturuyorum ona yazdırıp sonuca gidiyorum oysa bu işlem SQL cumlecigi ile yapılabiliyormuş ama nasıl bilen arkadaşlarım vardır mutlaka .
Rapor aşağıdaki gibi
TARİH H1 H2 V1 V2
--------------- ------ ----- ---- ----
01.02.2004 250 350 300 200
02.02.2004 300 400 250 ---
Görüldüğü gibi makina üretimleri günlük giriliyor ve tarih aralığı verilecek
makina üretimleri tek bir satırda gözüküyor.
Herkese şimdiden teşekkür ederim.
Kolay gelsin.
Başlık bir garip oldu galiba ama aklıma böyle geldi.
Burda yapmak istediğim aşağıdaki gibi veri girilmiş bir tablom var.
TARIH MAKINA ÜRETİM
------------- --------- ----------
01.02.2004 H1 250
01.02.2004 H2 350
01.02.2004 V1 300
01.02.2004 V2 200
02.02.2004 H1 300
02.02.2004 H2 400
02.02.2004 V1 250
şeklinde uzayıp giden bir tablo var ben buna güre şu şekilde bir rapor alıyorum ama bu işlem için geçici bir tablo oluşturuyorum ona yazdırıp sonuca gidiyorum oysa bu işlem SQL cumlecigi ile yapılabiliyormuş ama nasıl bilen arkadaşlarım vardır mutlaka .
Rapor aşağıdaki gibi
TARİH H1 H2 V1 V2
--------------- ------ ----- ---- ----
01.02.2004 250 350 300 200
02.02.2004 300 400 250 ---
Görüldüğü gibi makina üretimleri günlük giriliyor ve tarih aralığı verilecek
makina üretimleri tek bir satırda gözüküyor.
Herkese şimdiden teşekkür ederim.
Kolay gelsin.
Selamlar,
Öncelikle şu sorumuza yanıt verirseniz yöntemi belirleyebiliriz.
Makinalar (H1, H2, V1, V2...) kaç adet ve bunlar sabit mi? Yani sayıları arıtıp azalabiliyor mu ya da eğer değişiklik oluyorsa ne sıklıkta oluyor bu değişimler?
Kolay Gelsin
Öncelikle şu sorumuza yanıt verirseniz yöntemi belirleyebiliriz.
Makinalar (H1, H2, V1, V2...) kaç adet ve bunlar sabit mi? Yani sayıları arıtıp azalabiliyor mu ya da eğer değişiklik oluyorsa ne sıklıkta oluyor bu değişimler?
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
benzer bir istatistiğe benimde ihtiyacım olmuştu.
Hüsonet abim burda çözümü yazmıştı sanırım işini görecektir. ancak veri tabanı belitmemişsin. Bu kodlar access için yazıldı, bir çok veri tabanında çalışıyor ama öalışmadığı veri tabanlarıda var.
Hüsonet abim burda çözümü yazmıştı sanırım işini görecektir. ancak veri tabanı belitmemişsin. Bu kodlar access için yazıldı, bir çok veri tabanında çalışıyor ama öalışmadığı veri tabanlarıda var.
Kod: Tümünü seç
select YK.ADRES,
(Select count(*) from YESILKART as YK1 where YK.ADRES=YK1.ADRES and YK1.DURUM='UYGUN') as UYGUN,
(Select count(*) from YESILKART as YK1 where YK.ADRES=YK1.ADRES and YK1.DURUM='İPTAL') as IPTAL,
(Select count(*) from YESILKART as YK1 where YK.ADRES=YK1.ADRES and YK1.DURUM='KURULDA') as KURULDA,
(Select count(*) from YESILKART as YK1 where YK.ADRES=YK1.ADRES and YK1.DURUM='RED') as RED,
Count(*) as TOPLAM1, UYGUN+IPTAL+KURULDA+RED as TOPLAM2
from YESILKART as YK
group by ADRES
order by ADRES
Sayın ase yukarda gönderdiğin örneğe dayanarak aşağıdaki kodu yazdım denedim çalıştı ama acayip değerler geldi
İlk select de ki S_no yu içerde kullandığımda hata verdi bende önüne : atınca bu sefe çalışırken parametre olarak S_no istedi
Senin gönderdiğin kodda böyle birşey yok .
Sonuç yanlışta olsa bişeyler yakaladım ilginize teşekkür ederim.
İlk select de ki S_no yu içerde kullandığımda hata verdi bende önüne : atınca bu sefe çalışırken parametre olarak S_no istedi
Senin gönderdiğin kodda böyle birşey yok .
Sonuç yanlışta olsa bişeyler yakaladım ilginize teşekkür ederim.
Kod: Tümünü seç
sELECT S_NO,
(SELECT SUM(DEGER) FROM mdata1 WHERE :S_NO = SIPARIS and KOD = 1) AS URETIM,
(SELECT SUM(DEGER) FROM mdata1 WHERE :S_NO = SIPARIS and KOD = 2) AS DURUS
FROM
detay
group BY S_NO
Aslinda sayin ASE'nin ilk gonderdigi kod isinize yarar fakat uyarlamada biraz farklilik olmus...
kodu su sekilde yazarsaniz olmasi gerekir... Tablonuzun Adının TABLO oldugunu varsaydım...
Bu kod ustunde aptiginiz degisiklikleri ve nerede hata verdigini yazarsanız Allah'in izniyle birlikte hallederiz bu işi...
kodu su sekilde yazarsaniz olmasi gerekir... Tablonuzun Adının TABLO oldugunu varsaydım...
Kod: Tümünü seç
Select (Select Sum(T1.URETIM) from TABLO as T1 where T1.TARIH=T.TARIH and T1.MAKINA='H1') as H1,
Select (Select Sum(T1.URETIM) from TABLO as T1 where T1.TARIH=T.TARIH and T1.MAKINA='H2') as H2,
Select (Select Sum(T1.URETIM) from TABLO as T1 where T1.TARIH=T.TARIH and T1.MAKINA='V1') as V1,
Select (Select Sum(T1.URETIM) from TABLO as T1 where T1.TARIH=T.TARIH and T1.MAKINA='V2') as V2,
from TABLO as T
group by T.TARIH
order by T.TARIH
İzninizle tasarım konusunu gözden geçirmenizi önereceğim.
Problemin kaynağı burası.
Eğer ilk yazdığınız tablo düzenini kullanıyorsanız, sonuçları da ilk düzenin toplamı olarak raporlamanız uygundur.
Eğer son yazdığınız toplam tablosu (sağa doğru alanlarının sınırlı olduğu güvencesi verilmiş) kullanılacaksa, bilgilerin girildiği tabloyu da bu şekilde hazırlayınız. Yani her makine için bir sütün. Kolayca toplarsınız. Transpoza gerek kalmaz.
Bu tutarlılıkla hazırladığınız tablolarını sorgulanma süresi, denemekte olduğunuz yönteme göre çok daha hızlı olacak. Çünkü tablo üzerinden tek geçişte sonuç üretiliyor. Özellikle büyük tablolarda sonucu açıkca görebilirsiniz.
Kolay Gelsin,
Problemin kaynağı burası.
Eğer ilk yazdığınız tablo düzenini kullanıyorsanız, sonuçları da ilk düzenin toplamı olarak raporlamanız uygundur.
Eğer son yazdığınız toplam tablosu (sağa doğru alanlarının sınırlı olduğu güvencesi verilmiş) kullanılacaksa, bilgilerin girildiği tabloyu da bu şekilde hazırlayınız. Yani her makine için bir sütün. Kolayca toplarsınız. Transpoza gerek kalmaz.
Bu tutarlılıkla hazırladığınız tablolarını sorgulanma süresi, denemekte olduğunuz yönteme göre çok daha hızlı olacak. Çünkü tablo üzerinden tek geçişte sonuç üretiliyor. Özellikle büyük tablolarda sonucu açıkca görebilirsiniz.
Kolay Gelsin,
EVVVVETTT işte bu kadar
Bütüm emeği geçen arkadaşlar hepinize teşekkür ederim gönderdiğiniz kodlarla deneye deneye sonuca ulaştım doğru kod aşağıda

Bütüm emeği geçen arkadaşlar hepinize teşekkür ederim gönderdiğiniz kodlarla deneye deneye sonuca ulaştım doğru kod aşağıda
Kod: Tümünü seç
Select
(Select Sum(deger) from MDATA1 where MAKINA='1' AND TARIH = '02.01.2001') as H1,
(Select Sum(DEGER) from mdata1 where MAKINA='2' AND TARIH = '02.01.2001') as H2,
(Select Sum(DEGER) from mdata1 where MAKINA='3' AND TARIH = '02.01.2001') as H3,
(Select Sum(DEGER) from mdata1 where MAKINA='4' AND TARIH = '02.01.2001') as H4
from
mdata1
WHERE
TARIH = '02.01.2001'
GROUP by
TARIH
HEPİNİZDEN ALLAH RAZI OLSUN EMİNİM ÇOK ARKADAŞIMIZINDA İŞİNE YARAYACAKTIR
Selamlar,
Şeklinde kodu düzeltirseniz gelen Result'ta Tarih alanlarını da görebilirsiniz
Kolay Gelsin.
Kod: Tümünü seç
Select TARIH,
(Select Sum(deger) from MDATA1 where MAKINA='1' AND TARIH = '02.01.2001') as H1,
(Select Sum(DEGER) from mdata1 where MAKINA='2' AND TARIH = '02.01.2001') as H2,
(Select Sum(DEGER) from mdata1 where MAKINA='3' AND TARIH = '02.01.2001') as H3,
(Select Sum(DEGER) from mdata1 where MAKINA='4' AND TARIH = '02.01.2001') as H4
from
mdata1
WHERE
TARIH = '02.01.2001'
GROUP by
TARIH

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Ne demek,
Bizler de seviniyoruz,
Bu arada gaza geldim birkaç bişey daha yazayım
Diye yazarsanız 2 Ocak 2001 ile 1 Şubat 2001 tarihleri arasında gün gün makina toplamlarını alabilirsiniz.
Kolay Gelsin.
Bizler de seviniyoruz,
Bu arada gaza geldim birkaç bişey daha yazayım

Kod: Tümünü seç
Select M0.TARIH,
(Select Sum(M1.deger) from MDATA1 M1 where M1.MAKINA='1' AND M1.TARIH = M0.TARIH) as H1,
(Select Sum(M1.DEGER) from mdata1 M1 where M1.MAKINA='2' AND M1.TARIH = M0.TARIH) as H2,
(Select Sum(M1.DEGER) from mdata1 M1 where M1.MAKINA='3' AND M1.TARIH = M0.TARIH) as H3,
(Select Sum(M1.DEGER) from mdata1 M1 where M1.MAKINA='4' AND M1.TARIH = M0.TARIH) as H4
from
mdata1 M0
WHERE
M0.TARIH >= '02.01.2001' AND M0.TARIH < '01.02.2001'
GROUP by
TARIH
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/