Stored prosedur ile fatura satirlarindan Rapor hazi.

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Burhan_ast
Üye
Mesajlar: 143
Kayıt: 15 Haz 2003 08:33
Konum: Almaty, Kazakhstan

Stored prosedur ile fatura satirlarindan Rapor hazi.

Mesaj gönderen Burhan_ast »

Mrb arkadaslar

MS-SQL Server 2000 kullaniyorum, bir takim raporlar hazirliyorum fakat delphi ile hazirliyorum cok vakit aliyor bu nedenle Stored Procedure ile hazirlamak istiyorum, Asagida fatura satirlarim ve yapmak istedigim rapor var, tsk

Kod: Tümünü seç

Stok kodu            Miktar      Tutar          Tarih
14.01.77.0001          1           120           01.01.2005
14.01.77.0011          12           120        11.01.2005
18.01.77.0001          2          230          12.02.2005
18.01.78.0001        22          2341          01.01.2005
14.03.68.0001         11          34             11.01.2005


Fatura Satirlari bu bir tanede Temp tablom var bu temp tabloma su sekilde kayitlarin atilmasi lazim, 

Firma        Grup14_Miktar   Toplam          Grup18_miktar      Tutar 
77                 13                   240                      2                  230
78                                                                   22                2341
68                 11                   34
 
Seklinde bir Cross rapor hazirlamam gerekiyor aslinda 14 ve 18 olarak verdigim gruplar tam olarak 15 grup seklinde, ayrica fis satirlarinda depo, isyeri, tarih, islem tipi gibi kriterlerde mevcut,

kullanici ornegin sp'ye su parametreleri gonderecek

Rapor_hazirla(BaslangicTarih, SonTarih, Depo, KullaniciKayitNo)

bunun sonucundada istedigim raporu almak istiyorum,

tsk
onaydin

Mesaj gönderen onaydin »

Kod: Tümünü seç

select sq.firma, 
 isnull(sum(case sq.grup when 14 then sq.miktar end),0) as 'Grup 14 Miktar', 
isnull(sum(case sq.grup when 14 then sq.tutar end),0) as '14 Toplam' ,
 isnull(sum(case sq.grup when 18 then sq.miktar end),0) as 'Grup 18 Miktar', 
isnull(sum(case sq.grup when 18 then sq.tutar end) ,0) as '18 Toplam'
from

(SELECT 
	grup = substring(stok_kodu,1,2), 
	firma = substring(stok_kodu,7,2), sum(miktar) as miktar,
    sum(tutar) as tutar
FROM stok s
group by grup, firma) as sq
group by sq.firma
Bu sybase versiyonu, benzeri mssql de yazmak gerekebilir. Sanırım derived table kullanmak kolay (belki de uzun) yolu :) .

Tasarım yaparken söyle bir kaide var bir alanda sedece bir gerçeklik tutulur. Bu noktada stokkodu alanında birden fazla alanın ihtiva edilmesi sıkıntı doğururur, bir nevi tasarım hatası da denilebilir. Bu şekilde kullanmanın bazı sıkıntıları olablir mesela stok sayınızı sınırlarsınız. Bir diğer husus firma sayısı 99 u aştığı taktirde select i çekerken aradaki veriyi substring içinden sabit bir değer vererek alamazsınız, bu durmda locate benzeri bir fonksiyo kullanmak gerekebilir.
Cevapla