Öncelikle herkese iyi akşamlar. SQL sorgumda bir sorunla karşılaşıyorum. Şöyleki ;
hareketler ve dönemler diye 2 tane tablom var. hareketler tablosu alış ve satış fatura bilgileri ile beraber oldukça veri içeriyor. Dönemler tablosunda da ocak, şubat, mart... şeklinde ay isimleri mevcut. Benim almak istediğim sorgu sonucu hareketler tablosundaki stok alış adet ve satış adetlerini ayrı ayrı toplayım, month fonksiyonunu kullanarak aylık alış ve satış adetlerini raporlarmak. Alışlar ve satışlar aynı tablo içinde ve birbirinden 1 ve -1 diye 2 farklı değerler ayrılıyor . (alışlar : 1 , satışlar : -1 ).
Sorgum şöyle ;
Ben bu sorgu sonucunda ayların toplamlarını almak, hareket görmeyen aylarin toplamlarını null döndürmek istiyorum. Kısacası bana 12 ayın birden sorguda geri dönmesi gerekiyor. Hazırladığım rapor 12 aylık. Ancak SQL'in döndürüğü sonuç where ifadesinden dolayı şöyle ;
10 ASUS P5SL-MX/1333 40.00 MART
11 ASUS P5XL-MX/1333 70.00 MAYIS
14 ASUS X38 DDR2 GL 1310 10.00 HAZİRAN
14 ASUS X38 DDR2 GL 1310 350.00 MART
21 KINGSTON DDR 512MB 533 400.00 MART
35 SAMSUNG CDW DVD2 1 600.00 MART
Where ifadesinde hareketler.harekettipi = 1 dediğim için sadece alışı olan ayları getiriyor. ALmak istediğim rapor ;
Null Null Null Ocak
Null Null Null Şubat
10 ASUS P5SL-MX/1333 40.00 MART
14 ASUS X38 DDR2 GL 1310 350.00 MART
21 KINGSTON DDR 512MB 533 400.00 MART
35 SAMSUNG CDW DVD2 1 600.00 MART
Null Null Null Nisan
11 ASUS P5XL-MX/1333 70.00 MAYIS
14 ASUS X38 DDR2 GL 1310 10.00 HAZİRAN
Null Null Null Temmuz
Null Null Null Ağustos
Null Null Null Eylül
Null Null Null Ekim
Null Null Null Kasım
Null Null Null Aralık
Şeklinde olmalı. Bu sorgudan sonra datagrid'de istediğim şekli alabiliyor. Scalar fonksiyonlar ve iç içe sorgularla biryere varamadım. Hareket tipine de -1 dediğim an satış raporlarını almış olacağım. Gördüğünüz gibi bana 12 ayında ismi gerekiyor. Başka bir fikri, yöntemi olanlar yardım ederlerse çok sevinirim. Şimdiden teşekkürler.
hareketler ve dönemler diye 2 tane tablom var. hareketler tablosu alış ve satış fatura bilgileri ile beraber oldukça veri içeriyor. Dönemler tablosunda da ocak, şubat, mart... şeklinde ay isimleri mevcut. Benim almak istediğim sorgu sonucu hareketler tablosundaki stok alış adet ve satış adetlerini ayrı ayrı toplayım, month fonksiyonunu kullanarak aylık alış ve satış adetlerini raporlarmak. Alışlar ve satışlar aynı tablo içinde ve birbirinden 1 ve -1 diye 2 farklı değerler ayrılıyor . (alışlar : 1 , satışlar : -1 ).
Sorgum şöyle ;
SQL
- SELECT hareketler.stokadi , hareketler.stokkodu, SUM (hareketler.adet) AS toplam, donemler.ayadi
- FROM hareketler
- RIGHT OUTER JOIN donemler
- ON MONTH(hareketler.belgetarihi) = donemler.aykodu
- WHERE hareketler.harekettipi = 1
- GROUP BY hareketler.stokkodu, hareketler.stokadi, donemler.ayadi,donemler.aykodu
Ben bu sorgu sonucunda ayların toplamlarını almak, hareket görmeyen aylarin toplamlarını null döndürmek istiyorum. Kısacası bana 12 ayın birden sorguda geri dönmesi gerekiyor. Hazırladığım rapor 12 aylık. Ancak SQL'in döndürüğü sonuç where ifadesinden dolayı şöyle ;
10 ASUS P5SL-MX/1333 40.00 MART
11 ASUS P5XL-MX/1333 70.00 MAYIS
14 ASUS X38 DDR2 GL 1310 10.00 HAZİRAN
14 ASUS X38 DDR2 GL 1310 350.00 MART
21 KINGSTON DDR 512MB 533 400.00 MART
35 SAMSUNG CDW DVD2 1 600.00 MART
Where ifadesinde hareketler.harekettipi = 1 dediğim için sadece alışı olan ayları getiriyor. ALmak istediğim rapor ;
Null Null Null Ocak
Null Null Null Şubat
10 ASUS P5SL-MX/1333 40.00 MART
14 ASUS X38 DDR2 GL 1310 350.00 MART
21 KINGSTON DDR 512MB 533 400.00 MART
35 SAMSUNG CDW DVD2 1 600.00 MART
Null Null Null Nisan
11 ASUS P5XL-MX/1333 70.00 MAYIS
14 ASUS X38 DDR2 GL 1310 10.00 HAZİRAN
Null Null Null Temmuz
Null Null Null Ağustos
Null Null Null Eylül
Null Null Null Ekim
Null Null Null Kasım
Null Null Null Aralık
Şeklinde olmalı. Bu sorgudan sonra datagrid'de istediğim şekli alabiliyor. Scalar fonksiyonlar ve iç içe sorgularla biryere varamadım. Hareket tipine de -1 dediğim an satış raporlarını almış olacağım. Gördüğünüz gibi bana 12 ayında ismi gerekiyor. Başka bir fikri, yöntemi olanlar yardım ederlerse çok sevinirim. Şimdiden teşekkürler.

