none
Depo giriş çıkış işlemleri ve girilen notları getirtme RRS feed

  • Soru

  • Merhaba Arkadaşlar,

    Depoma giriş ve çıkış işlemi yapıyorum daha sonra ürün bazlı giren çıkan kalan bularak formumda listeliyorum fakat yapmak istediğim depoma giriş ve çıkış yapılırken ürüne not düşüyorum ve bu notuda bu rapor içerisinde göstertmek istiyorum notu eklediğimde grouplama bozuluyor çünkü aynı ürüne birden fazla not eklemem yüzünden bende şunu düşündüm grubu bozmadan kaç tane notum var ise tek bir colon ekleyip notları birleştirip raporuda göstermek (örn. hücre içerisinde birden fazla not olduğunda 1.NOT-2.NOT vs.) bunu yapmaya çalışıyorum ama her seferinde raporum bozuluyor yardımcı olursanız çok memnun olurum!

    @ENERJISANTRALADI nvarchar(50),
    @EKIPMANADI nvarchar(50),
    @STOK_KODU nvarchar(50),
    @STOK_ADI nvarchar(50)
    )
    as
    SELECT STOK.STOK_KODU, STOK.STOK_ADI,STOK.FIYATI,STOK.EKIPMANDAOLMASIGEREKADET,
    STOK.KGBIRIMDEGERI,
    SUM(CASE WHEN STOKHAREKET.GCKODU = 'Giriş' THEN STOKHAREKET.MIKTAR ELSE 0 END) AS Giris,
    SUM (CASE WHEN STOKHAREKET.GCKODU = 'Çıkış' THEN STOKHAREKET.MIKTAR ELSE 0 END) AS Cikis,
    SUM(CASE WHEN STOKHAREKET.GCKODU = 'Giriş' THEN STOKHAREKET.MIKTAR ELSE 0 END)-
    SUM (CASE WHEN STOKHAREKET.GCKODU = 'Çıkış' THEN STOKHAREKET.MIKTAR ELSE 0 END) AS Kalan
     FROM STOKHAREKET
     INNER JOIN STOK
     ON STOKHAREKET.STOKKARTID = STOK.STOKKARTID
    INNER JOIN IRSALIYE
    ON STOKHAREKET.IRSALIYENO = IRSALIYE.IRSALIYENO
     INNER JOIN
    dbo.ENERJI_SANTRALLERI ON dbo.STOKHAREKET.SANTRALID = dbo.ENERJI_SANTRALLERI.SANTRALID
    INNER JOIN
    dbo.EKIPMANLAR ON dbo.STOKHAREKET.EKIPMANID = dbo.EKIPMANLAR.EKIPMANID
    WHERE ENERJI_SANTRALLERI.ENERJISANTRALADI LIKE @ENERJISANTRALADI+'%' AND 
    EKIPMANLAR.EKIPMANADI LIKE @EKIPMANADI+'%' AND STOK.STOK_KODU LIKE @STOK_KODU+'%'
    AND STOK.STOK_ADI LIKE @STOK_ADI+'%' GROUP BY STOK.STOK_KODU,STOK.STOK_ADI,STOK.FIYATI, STOK.EKIPMANDAOLMASIGEREKADET,KGBIRIMDEGERI


    Cezakellahu Hayran

    26 Haziran 2015 Cuma 11:31

Yanıtlar

  • Isin icinde sum() olduguna gore giris-cikis kodu ile notlarin birlestirilmesini ayrica yapmak isteyeceksin. Senin kodun gozu fazla yordugundan oradan tablo kolon isimlerini vs okumak istemedim, onun yerine kendi kafamdan uydurdugum isimlerle sunun gibi bir sey yapabilirsin:

    WITH  notlar
            AS (
                 SELECT GirisCikisId,
                        'Not ' +
                        LTRIM(STR(ROW_NUMBER() OVER ( PARTITION BY [GirisCikisID] ORDER BY [NotId] ))) +
                        ': ' + txtNot AS gcNotlari
                 FROM   [GirisCikisNot]
               ),
          StokNotlari
            AS (
                 SELECT GirisCikisId,
                        (
                          SELECT  gcNotlari + CHAR(10)
                          FROM    [notlar] n
                          WHERE   n.[GirisCikisID] = gc.[GirisCikisId]
                        FOR
                          XML PATH('')
                        ) as StokNotu
                 FROM   [GirisCikislar] AS [gc]
               )
      SELECT  ... ;
    

    Ana select icin StokNotlari (GirisCikisId,  StokNotu) olan join edebilecegin bir tablo gibi. Tabii bu kadar isi server'da yaptirmak ister misin o ayri. Istesen bile SQL server string islemlerinde cok yavas, onun icin isin bu kismini C# ile CLR function olarak yazmak isteyebilirsin (inanilmaz buyuk hiz farklari gozlenebiliyor, benden soylemesi).

    Not: SQL'ini bu kadar okunamaz hale getiren bir arac mi kullaniyorsun? Redgate SQLPrompt cok basarili ama ucretli, Apex'inki o kadar iyi degil ama ucretsiz. Onlardan birisiyle gozlerine iskence etmeyi azaltabilirsin.

    • Yanıt Olarak İşaretleyen Burak ORDU 30 Haziran 2015 Salı 21:14
    26 Haziran 2015 Cuma 12:33