Ambar stok durumu

Gönderen Konu: Ambar stok durumu  (Okunma sayısı 2225 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı yildirim

  • Logo Kullanıcısı
  • **
  • Karma: 0
Ambar stok durumu
« : 11.04.2012, 08:32 »
Merhaba arkadaşlar;
Ben aşağıdaki gibi bir view oluşturdum.Burada sıfır nolu ambarda en son stok durumun getiriyor.Ben bunların yanına devirden gelen fiyatı da getirmek istediğimde stok miktarı değişiyor.Yani ben sıfır nolu ambarda olan malzemelerin stok durumunu yanına devirden gelen fiyatı eğer devirden gelen fiyat yoksa satınalma fiyatını getirmek istiyorum.

SELECT     TOP (100) PERCENT ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, SUM(SLTRANS.REMAMOUNT) AS MIKTAR
FROM         dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                      dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                      dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF
WHERE     (SLTRANS.INVENNO = 0) AND (SLTRANS.REMAMOUNT > 0)
GROUP BY ITEMS.CODE, ITEMS.NAME

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: Ambar stok durumu
« Yanıtla #1 : 11.04.2012, 08:48 »
Merhaba,

Bu istemiş olduğunu ayrı bir rapor olarak düşün ve bunu raporu ayrıca yap,
yani 0 nolu ambarda olan malzemelerin devir rakamlarını yoksa satınalma faturalarından rakamları okuyan bir rapor yap.

daha sonra bu iki raporu birleştirmeyi beraber yapalım olur mu,

yeni raporda da takıldığın yer olursa buradan sorabilirsin.

Kolay gelsin.

Çevrimdışı yildirim

  • Logo Kullanıcısı
  • **
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #2 : 11.04.2012, 10:53 »
Merhaba Monsieur;
Şöyle bir şey yaptım ama bunları birleştirebilirmiyiz.
1-Sıfır nolu ambarda malzeme miktarını gösteriyor.
SELECT     TOP (100) PERCENT ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, SUM(SLTRANS.REMAMOUNT) AS MIKTAR
FROM         dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                      dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                      dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF
WHERE     (SLTRANS.INVENNO = 0) AND (SLTRANS.REMAMOUNT > 0)
GROUP BY ITEMS.CODE, ITEMS.NAME
2-Sıfır nolu ambarda devirden gelen fiyatı gösteriyor.
SELECT     TOP (100) PERCENT ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_086_01_STLINE.PRICE
FROM         dbo.LG_086_01_STLINE INNER JOIN
                      dbo.LG_086_01_STFICHE ON dbo.LG_086_01_STLINE.STFICHEREF = dbo.LG_086_01_STFICHE.LOGICALREF INNER JOIN
                      dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                      dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                      dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF ON dbo.LG_086_01_STLINE.STOCKREF = ITEMS.LOGICALREF
WHERE     (SLTRANS.INVENNO = 0) AND (dbo.LG_086_01_STFICHE.TRCODE = 14)
GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_086_01_STFICHE.TRCODE, dbo.LG_086_01_STLINE.PRICE

3-Sıfır nolu ambarda Satınalma fiyatını gösteriyor.
SELECT     TOP (100) PERCENT ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_086_PRCLIST.PRICE
FROM         dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                      dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                      dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF INNER JOIN
                      dbo.LG_086_PRCLIST ON ITEMS.LOGICALREF = dbo.LG_086_PRCLIST.CARDREF
WHERE     (SLTRANS.INVENNO = 0) AND (dbo.LG_086_PRCLIST.PTYPE = 1) AND (dbo.LG_086_PRCLIST.ENDDATE = CONVERT(DATETIME, '2012-12-31 00:00:00', 102))
GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_086_PRCLIST.PTYPE, dbo.LG_086_PRCLIST.ENDDATE, dbo.LG_086_PRCLIST.PRICE

Benim istediğim sıfır nolu ambarda olan malzemelerin kodunu miktarını yanına devirden gelen fiyat varsa o fiyatı devirden gelen fiyat yoksa satınalma fiyatını getirsin.

Kolay gelsin.

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: Ambar stok durumu
« Yanıtla #3 : 11.04.2012, 11:48 »
Merhaba

Tabi ki birleştirebilirsiniz,
zaten bunu öğrenmeniz için size yaptırmak istedim
şimdi yaptıklarınızı 3 ayrı tablo olarak düşünün

tablo1, tablo2 ve tablo3

şimdi bunları bağlamak için nasıl yapıyorduk (ben left ile bağlayacağım)

SELECT * FROM TABLO1 T1
LEFT OUTER JOIN TABLO2 T2 ON T1.LOGICALREF=T2.LOGICALREF
LEFT OUTER JOIN TABLO3 T3 ON T1.LOGICALREF=T3.LOGICALREF

bu kadar

o zaman bu tablo yerlerine seninkileri yazalım mı? :)

SELECT   I.CODE
      ,I.NAME
      ,TABLO1.MIKTAR AS MIKTAR
      ,TABLO2.PRICE AS DEVIR_FIYAT
      ,TABLO3.PRICE AS SATINALMA_FIYAT
FROM   LG_112_ITEMS I
LEFT OUTER JOIN   (SELECT     ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, SUM(SLTRANS.REMAMOUNT) AS MIKTAR
                  FROM         dbo.LG_112_ITEMS AS ITEMS INNER JOIN
                                   dbo.LG_112_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                   dbo.LG_112_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF
                  WHERE     (SLTRANS.INVENNO = 0) AND (SLTRANS.REMAMOUNT > 0)
                  GROUP BY ITEMS.CODE, ITEMS.NAME) TABLO1 ON TABLO1.KODU=I.CODE
LEFT OUTER JOIN (SELECT      ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_112_01_STLINE.PRICE
                  FROM         dbo.LG_112_01_STLINE INNER JOIN
                                   dbo.LG_112_01_STFICHE ON dbo.LG_112_01_STLINE.STFICHEREF = dbo.LG_112_01_STFICHE.LOGICALREF INNER JOIN
                                   dbo.LG_112_ITEMS AS ITEMS INNER JOIN
                                   dbo.LG_112_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                   dbo.LG_112_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF ON dbo.LG_112_01_STLINE.STOCKREF = ITEMS.LOGICALREF
                  WHERE     (SLTRANS.INVENNO = 0) AND (dbo.LG_112_01_STFICHE.TRCODE = 14)
                  GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_112_01_STFICHE.TRCODE, dbo.LG_112_01_STLINE.PRICE) TABLO2 ON TABLO2.KODU = I.CODE
LEFT OUTER JOIN (SELECT    ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_112_PRCLIST.PRICE
                  FROM         dbo.LG_112_ITEMS AS ITEMS INNER JOIN
                                   dbo.LG_112_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                   dbo.LG_112_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF INNER JOIN
                                   dbo.LG_112_PRCLIST ON ITEMS.LOGICALREF = dbo.LG_112_PRCLIST.CARDREF
                  WHERE     (SLTRANS.INVENNO = 0) AND (dbo.LG_112_PRCLIST.PTYPE = 1) AND (dbo.LG_112_PRCLIST.ENDDATE = CONVERT(DATETIME, '2012-12-31 00:00:00', 102))
                  GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_112_PRCLIST.PTYPE, dbo.LG_112_PRCLIST.ENDDATE, dbo.LG_112_PRCLIST.PRICE) TABLO3 ON TABLO3.KODU=I.CODE


mantığını kapmışsındır diye umuyorum.

Kolay gelsin.


Çevrimdışı yildirim

  • Logo Kullanıcısı
  • **
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #4 : 11.04.2012, 13:44 »
Çok teşekkür ederim emeğinize sağlık.

Çevrimdışı yildirim

  • Logo Kullanıcısı
  • **
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #5 : 11.04.2012, 14:17 »
Merhaba Monsieur;
Bir şey daha soracam şöyle bir şey yapmaya uğraştım ama yapamadım.Hangi tarihler arasında elimizde kalan miktarı görebilmek için tarih filtresi ekleyeyim dedim (DATE_BETWEEN '01.01.2012' AND '31.12.2012') diye bir şey ekledim ama olmadı.
Bunu ekleyebilirmiyim.
Not: Tabloları birleştirmeden tek tek yaptığım view'e date'i eklediğimde 400 tane fazla kayıt geliyor.

Çevrimdışı Monsieur®

  • LogoDestek Yönetim
  • Logo Uzmanı
  • *****
  • Karma: 38
Ynt: Ambar stok durumu
« Yanıtla #6 : 11.04.2012, 16:58 »
Merhaba,

Hangi tablo için koyacak isen önce onu çalıştır ki doğru gelsin. :)

Çevrimdışı yildirim

  • Logo Kullanıcısı
  • **
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #7 : 17.04.2012, 17:33 »
Merhaba;
Aşağıdaki CASE WHEN TABLO2.PRICE = NULL THEN 'TABLO1.MIKTAR * TABLO3.PRICE' END AS [SATINALMA TOPLAM] ile devirden gelen fiyatı null ise satınalma fiyatından gelen fiyat ile miktarı çarp dedim ama yine null diye sonuç verdi.Burada nerede yanlış yapmış olabilirim.Ayrıca (STLINE.DATE_ BETWEEN '01.01.2012' AND '31.12.2012') dedim ama tarihi getiremedim üç tablodada denedim.Burada nerde yanlış yapmış olabilirim.

SELECT     I.CODE, I.NAME, TABLO1.MIKTAR, TABLO2.PRICE AS DEVIR_FIYAT, TABLO3.PRICE AS SATINALMA_FIYAT, TABLO1.MIKTAR * TABLO2.PRICE AS [DEVIR TOPLAM],
                      CASE WHEN TABLO2.PRICE = NULL THEN 'TABLO1.MIKTAR * TABLO3.PRICE' END AS [SATINALMA TOPLAM]
FROM         dbo.LG_086_ITEMS AS I LEFT OUTER JOIN
                          (SELECT     ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, SUM(SLTRANS.REMAMOUNT) AS MIKTAR
                            FROM          dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                                                   dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                                   dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF
                            WHERE      (SLTRANS.INVENNO = 4) AND (SLTRANS.REMAMOUNT > 0)
                            GROUP BY ITEMS.CODE, ITEMS.NAME) AS TABLO1 ON TABLO1.KODU = I.CODE LEFT OUTER JOIN
                          (SELECT     ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_086_01_STLINE.PRICE
                            FROM          dbo.LG_086_01_STLINE INNER JOIN
                                                   dbo.LG_086_01_STFICHE ON dbo.LG_086_01_STLINE.STFICHEREF = dbo.LG_086_01_STFICHE.LOGICALREF INNER JOIN
                                                   dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                                                   dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                                   dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF ON
                                                   dbo.LG_086_01_STLINE.STOCKREF = ITEMS.LOGICALREF
                            WHERE      (SLTRANS.INVENNO = 4) AND (dbo.LG_086_01_STFICHE.TRCODE = 14)
                            GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_086_01_STFICHE.TRCODE, dbo.LG_086_01_STLINE.PRICE) AS TABLO2 ON
                      TABLO2.KODU = I.CODE LEFT OUTER JOIN
                          (SELECT     ITEMS.CODE AS KODU, ITEMS.NAME AS ACIKLAMA, dbo.LG_086_PRCLIST.PRICE
                            FROM          dbo.LG_086_ITEMS AS ITEMS INNER JOIN
                                                   dbo.LG_086_01_SERILOTN AS SERILOTN ON ITEMS.LOGICALREF = SERILOTN.ITEMREF INNER JOIN
                                                   dbo.LG_086_01_SLTRANS AS SLTRANS ON SERILOTN.LOGICALREF = SLTRANS.SLREF INNER JOIN
                                                   dbo.LG_086_PRCLIST ON ITEMS.LOGICALREF = dbo.LG_086_PRCLIST.CARDREF
                            WHERE      (SLTRANS.INVENNO = 0) AND (dbo.LG_086_PRCLIST.PTYPE = 1) AND (dbo.LG_086_PRCLIST.ENDDATE = CONVERT(DATETIME, '2012-12-31 00:00:00',
                                                   102))
                            GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_086_PRCLIST.PTYPE, dbo.LG_086_PRCLIST.ENDDATE, dbo.LG_086_PRCLIST.PRICE) AS TABLO3 ON
                      TABLO3.KODU = I.CODE
Teşekkür ederim.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: Ambar stok durumu
« Yanıtla #8 : 17.04.2012, 19:00 »
CASE WHEN TABLO2.PRICE = NULL THEN 'TABLO1.MIKTAR * TABLO3.PRICE' END AS [SATINALMA TOPLAM]
yerine
CASE WHEN TABLO2.PRICE IS NULL THEN (TABLO1.MIKTAR * TABLO3.PRICE) END AS [SATINALMA TOPLAM]
demelisiniz.

LG_086_PRCLIST.ENDDATE = CONVERT(DATETIME, '2012-12-31 00:00:00'
yerine
YEAR(LG_086_PRCLIST.ENDDATE)=2012 diyebilirsiniz.

bir de LG_086_01_SERILOTN  tablosundan alınan bir değer ben göremedim. bu tabloyu çıkartarak da sorguyu sadeleştirebilirsiniz...

Çevrimdışı denver

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #9 : 18.04.2012, 15:19 »
Slm;
Yukarıdaki kodda biraz değişiklik yaptım ama excellde pivot tabloya atınca ay sonu eldeki kalan miktarlar yanlış çıkıyor ayrıca ambar no'da 4'ün dışında null diye değerlerde geliyor.
SELECT     I.CODE, TABLO1.ELDEKILER, TABLO2.PRICE AS [SATINALMA FIYAT], TABLO3.PRICE AS [DEVIR FIYAT], TABLO1.AY, TABLO1.[AMBAR NO]
FROM         dbo.LG_010_ITEMS AS I LEFT OUTER JOIN
                          (SELECT     TOP (100) PERCENT dbo.LG_010_ITEMS.CODE AS [MALZEME KODU], dbo.LG_010_07_STINVTOT.INVENNO AS [AMBAR NO],
                                                   SUM(dbo.LG_010_07_STINVTOT.ONHAND) AS ELDEKILER, MONTH(dbo.LG_010_07_STINVTOT.DATE_) AS AY
                            FROM          dbo.LG_010_ITEMS INNER JOIN
                                                   dbo.LG_010_07_STINVTOT ON dbo.LG_010_ITEMS.LOGICALREF = dbo.LG_010_07_STINVTOT.STOCKREF
                            WHERE      (dbo.LG_010_07_STINVTOT.INVENNO = 4)
                            GROUP BY dbo.LG_010_ITEMS.CODE, dbo.LG_010_07_STINVTOT.INVENNO, MONTH(dbo.LG_010_07_STINVTOT.DATE_)) AS TABLO1 ON
                      TABLO1.[MALZEME KODU] = I.CODE LEFT OUTER JOIN
                          (SELECT     TOP (100) PERCENT LG_010_ITEMS_1.CODE AS [MALZEME KODU], LG_010_07_STINVTOT_1.INVENNO AS [AMBAR NO],
                                                   SUM(LG_010_07_STINVTOT_1.ONHAND) AS ELDEKILER, dbo.LG_010_PRCLIST.PRICE, dbo.LG_010_PRCLIST.ENDDATE
                            FROM          dbo.LG_010_ITEMS AS LG_010_ITEMS_1 INNER JOIN
                                                   dbo.LG_010_07_STINVTOT AS LG_010_07_STINVTOT_1 ON LG_010_ITEMS_1.LOGICALREF = LG_010_07_STINVTOT_1.STOCKREF INNER JOIN
                                                   dbo.LG_010_PRCLIST ON LG_010_ITEMS_1.LOGICALREF = dbo.LG_010_PRCLIST.CARDREF
                            WHERE      (LG_010_07_STINVTOT_1.INVENNO = 4)
                            GROUP BY LG_010_ITEMS_1.CODE, LG_010_07_STINVTOT_1.INVENNO, dbo.LG_010_PRCLIST.PRICE, dbo.LG_010_PRCLIST.PTYPE,
                                                   dbo.LG_010_PRCLIST.ENDDATE
                            HAVING      (dbo.LG_010_PRCLIST.PTYPE = 1) AND (dbo.LG_010_PRCLIST.ENDDATE = CONVERT(DATETIME, '2012-12-31 00:00:00', 102))) AS TABLO2 ON
                      TABLO2.[MALZEME KODU] = I.CODE LEFT OUTER JOIN
                          (SELECT     TOP (100) PERCENT ITEMS.CODE AS [MALZEME KODU], ITEMS.NAME AS ACIKLAMA, dbo.LG_010_07_STLINE.PRICE
                            FROM          dbo.LG_010_07_STLINE INNER JOIN
                                                   dbo.LG_010_07_STFICHE ON dbo.LG_010_07_STLINE.STFICHEREF = dbo.LG_010_07_STFICHE.LOGICALREF INNER JOIN
                                                   dbo.LG_010_ITEMS AS ITEMS ON dbo.LG_010_07_STLINE.STOCKREF = ITEMS.LOGICALREF
                            WHERE      (dbo.LG_010_07_STFICHE.TRCODE = 14) AND (dbo.LG_010_07_STLINE.LINETYPE = 0) AND (dbo.LG_010_07_STLINE.SOURCEINDEX = 4)
                            GROUP BY ITEMS.CODE, ITEMS.NAME, dbo.LG_010_07_STLINE.PRICE) AS TABLO3 ON TABLO3.[MALZEME KODU] = I.CODE

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: Ambar stok durumu
« Yanıtla #10 : 18.04.2012, 16:14 »
şu kodu bir dener misiniz?
bende çalışıyor...

SELECT DISTINCT   
MAL.CODE AS 'STOK KODU',
MAL.NAME AS 'AÇIKLAMA',
TOPLAM.ONHAND AS 'ELDEKİ STOK',
(CASE
      WHEN   (SELECT DISTINCT PRICE FROM LG_001_07_STLINE WHERE STOCKREF=MAL.LOGICALREF AND TRCODE=14)!=0
            THEN HAREKET.PRICE
            ELSE  FİYAT.PRICE END)
            AS 'FİYATI'
 ,(CASE
      WHEN   (SELECT DISTINCT PRICE FROM LG_001_07_STLINE WHERE STOCKREF=MAL.LOGICALREF AND TRCODE=14)!=0
            THEN HAREKET.PRICE*TOPLAM.ONHAND
            ELSE  FİYAT.PRICE*TOPLAM.ONHAND END)
            AS 'DEĞERİ'
 

FROM LG_001_ITEMS MAL
LEFT OUTER JOIN LV_001_07_GNTOTST TOPLAM ON TOPLAM.STOCKREF = MAL.LOGICALREF
LEFT OUTER JOIN LG_001_PRCLIST FİYAT ON MAL.LOGICALREF=FİYAT.CARDREF
LEFT OUTER JOIN LG_001_07_STLINE HAREKET ON MAL.LOGICALREF=HAREKET.STOCKREF
WHERE 
(TOPLAM.INVENNO = 0) AND
(TOPLAM.ONHAND <> 0)

GROUP BY MAL.CODE, MAL.NAME, TOPLAM.ONHAND, HAREKET.PRICE, FİYAT.PRICE, MAL.LOGICALREF
ORDER BY MAL.CODE

Çevrimdışı denver

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: Ambar stok durumu
« Yanıtla #11 : 18.04.2012, 17:12 »
Koray bey;
Bende devir fişinin yanında sarf ve üretimden giriş fişlerinden gelen fiyatıda getiriyor.Ayrıca stok durumunda gerçek stok ile fiili stok'u toplayıp'ta getiriyor.

Çevrimdışı Koray Ü.

  • Logo Uzmanı
  • *****
  • Karma: 8
Ynt: Ambar stok durumu
« Yanıtla #12 : 19.04.2012, 12:02 »
küçük bir ilave yaptım:

SELECT DISTINCT   
MAL.CODE AS 'STOK KODU',
MAL.NAME AS 'AÇIKLAMA',
TOPLAM.ONHAND AS 'ELDEKİ STOK',
(CASE
      WHEN   (SELECT DISTINCT PRICE FROM LG_001_07_STLINE WHERE STOCKREF=MAL.LOGICALREF AND TRCODE=14)!=0
            THEN HAREKET.PRICE
            ELSE  FİYAT.PRICE END)
            AS 'FİYATI'
 ,(CASE
      WHEN   (SELECT DISTINCT PRICE FROM LG_001_07_STLINE WHERE STOCKREF=MAL.LOGICALREF AND TRCODE=14)!=0
            THEN HAREKET.PRICE*TOPLAM.ONHAND
            ELSE  FİYAT.PRICE*TOPLAM.ONHAND END)
            AS 'DEĞERİ'
 

FROM LG_001_ITEMS MAL
LEFT OUTER JOIN LV_001_07_GNTOTST TOPLAM ON TOPLAM.STOCKREF = MAL.LOGICALREF
LEFT OUTER JOIN LG_001_PRCLIST FİYAT ON MAL.LOGICALREF=FİYAT.CARDREF
LEFT OUTER JOIN LG_001_07_STLINE HAREKET ON MAL.LOGICALREF=HAREKET.STOCKREF
WHERE 
(TOPLAM.INVENNO = -1) AND
(TOPLAM.ONHAND <> 0) AND
(HAREKET.TRCODE=14)

GROUP BY MAL.CODE, MAL.NAME, TOPLAM.ONHAND, HAREKET.PRICE, FİYAT.PRICE, MAL.LOGICALREF
ORDER BY MAL.CODE

invenno=-1 olduğunda genel toplam,
0,1 veya 2 olduğunda o ambar toplamı geliyor...