Ayrıntılı Satış için SQL sorgusu yardımı

Gönderen Konu: Ayrıntılı Satış için SQL sorgusu yardımı  (Okunma sayısı 1063 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı judgeofnights

  • Yeni Kullanıcı
  • *
  • Karma: 0
Hazırladığım bir çeşit ayrıntılı satış raporu var SQL olarak. Kodu inceleyip optimize etmeme yardımcı olursanız sevinirim. Özellikle Fiyat farkı sütununu alırken baya zorlandım ve bana fazladan query yazmışım gibi geliyor. Orada yapmak istediğim girdiğim tarih aralığında satışı gerçekleşmiş ürünlerden fiyat farkı varsa toplamını göstermekti. Navigator'le yaptığımda INVCALC fonksiyonunu kulanmam gerekiyor onunda şu handikapı var; tarih filtresi içinde FF varsa o ayki tüm FF'nin toplamını gösteriyor ama benim stoğum daha önceki bir döneme ait olabilir bu filtreye dahil edilemediği için elim kolum bağlandı bende bu sorguyu hazırladım. Sadece girdiğim tarih arasında satışı yapılan ürünlerin FF'ını gösteren fonksiyon varsa işimi excel'de çözebilirim.

İlginize teşekkürler


SELECT
   I.CODE [Malzeme Kodu],
   I.NAME [Malzeme Adı],
   [SATIŞ ADET] = SUM(CASE S.TRCODE WHEN 8 THEN s.AMOUNT ELSE 0 END),
   [İADE ADET] = SUM(CASE S.TRCODE WHEN 3 THEN s.AMOUNT ELSE 0 END),
   [SATIŞ TUTARI] = SUM(CASE S.TRCODE WHEN 8 THEN s.TOTAL ELSE 0 END),
   [İADE TUTARI] = SUM(CASE S.TRCODE WHEN 3 THEN s.TOTAL ELSE 0 END),
   [İNDİRİM] = SUM(CASE S.TRCODE WHEN 8 THEN s.DISTDISC WHEN 3 THEN s.DISTDISC*-1 ELSE 0 END),
   [Fiyat Farkı] = (SELECT SUM(CASE WHEN (P.FF IS NULL OR P.FF=0) THEN 0 ELSE P.FF END)
FROM LG_077_02_STLINE Q
INNER JOIN (SELECT SUM(LINENET) FF, SOURCELINK, STOCKREF FROM LG_077_02_STLINE WHERE TRCODE=14 GROUP BY STOCKREF,SOURCELINK) P ON (P.SOURCELINK=Q.LOGICALREF AND P.STOCKREF=Q.STOCKREF)
WHERE Q.TRCODE = 8 AND Q.DATE_>='2008-06-01' AND Q.DATE_<='2008-06-30' AND Q.STOCKREF=S.STOCKREF
GROUP BY P.STOCKREF) ,
   [Net Tutar] = SUM(CASE S.TRCODE WHEN 8 THEN s.LINENET WHEN 3 THEN s.LINENET*-1 ELSE 0 END)
FROM LG_077_02_STLINE S
   INNER JOIN LG_077_ITEMS I ON I.LOGICALREF=S.STOCKREF
   INNER JOIN LG_077_CLCARD C ON C.LOGICALREF=S.CLIENTREF
   INNER JOIN LG_077_02_INVOICE ST ON ST.LOGICALREF=S.INVOICEREF
WHERE
   C.SPECODE LIKE 'ZİNCİR' AND
   S.TRCODE IN (3,8) AND S.BILLED IN (1) AND
   (S.DATE_ BETWEEN CONVERT(DATETIME , '01.06.2008' , 104) AND
      CONVERT(DATETIME , '30.06.2008' , 104))
group by I.CODE , I.NAME, S.STOCKREF--, S.LOGICALREF --,   I.CYPHCODE
ORDER BY --I.CYPHCODE,
I.CODE
« Son Düzenleme: 07.07.2008, 13:32 Gönderen: judgeofnights »