Merhaba,
Aşağıdaki sorguda;
Msg 8114, Level 16, State 5, Line 1
varchar veri türü numeric veri türüne dönüştürülürken hata.
hatası veriyor.
Nasıl düzeltilebilir?
Aslında (yeterli stok yok) yazısı yerine sıfır (0) yazsa nasıl olur?
Demek istediğim (-) durumdaki stokları da sıfır (0) görelim.
Eğer bir üründen sipariş miktarı toplam mevcuttan fazlaysa yani fark < 0 ise doğrudan sıfır yazmalıdır.
Bir diğer konu da;
İç ve dış Selectler sorgu içerisine alınabilir mi?
SELECT
[ÜRÜN KODU],
SHOWROOM,
ŞUBE,
[TOPLAM MEVCUT],
SİPARİŞ,
SATILABİLİR
FROM
(
SELECT * FROM
(
SELECT
I.CODE AS 'ÜRÜN KODU',
I.STGRPCODE,
ISNULL(B2.X,0) 'SHOWROOM',
ISNULL(B4.X,0) 'ŞUBE',
ISNULL(B1.X,0) 'TOPLAM MEVCUT',
ISNULL(B3.X,0) 'SİPARİŞ',
CASE
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) > 0 THEN CONVERT(varchar,(ISNULL(B1.X,0)-ISNULL(B3.X,0)))
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) <=0 THEN 'Yeteri Kadar Stok Yok'
END AS 'Satılabilir'
FROM LG_622_ITEMS I
LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=-1 GROUP BY STOCKREF
) AS B1 ON B1.STOCKREF=I.LOGICALREF
LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=1 GROUP BY STOCKREF
) AS B2 ON B2.STOCKREF=I.LOGICALREF
LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=2 GROUP BY STOCKREF
) AS B4 ON B4.STOCKREF=I.LOGICALREF
LEFT JOIN
(
SELECT STOCKREF, SUM(AMOUNT-SHIPPEDAMOUNT) X FROM LG_622_04_ORFLINE ORL
WHERE ORL.TRCODE=1 AND ORL.LINETYPE IN (0,7) AND (ORL.AMOUNT-ORL.SHIPPEDAMOUNT > 0 ) AND ORL.STATUS <>2 AND ORL.CANCELLED=0
GROUP BY ORL.STOCKREF
) AS B3 ON B3.STOCKREF=I.LOGICALREF
WHERE I.CARDTYPE=12
)
AS T
WHERE
CAST(SHOWROOM AS decimal(38,2))>0 OR
CAST(ŞUBE AS decimal(38,2))>0 OR
CAST([TOPLAM MEVCUT] AS decimal(38,2))>0 OR
CAST(SİPARİŞ AS decimal(38,2))>0 OR
CAST(SATILABİLİR AS decimal(38,2))>0
) TS
ORDER BY STGRPCODE, [ÜRÜN KODU]