ChatGpt Cevabı;



Merhaba! Kodunuzda birkaç potansiyel sorun var gibi görünüyor. İlk olarak, DISTINCT anahtar kelimesini aa CTE'sinde kullanmanız gerekmeyebilir, çünkü zaten GROUP BY ifadesi kullanıyorsunuz. Ayrıca, DISTINCT ve GROUP BY kullanımını bir arada kullanmak bazen beklenmeyen sonuçlara yol açabilir.
İkinci olarak, aa CTE'sindeki DATEDIFF fonksiyonunu ISLEMGORMEYENGUN sütununda kullanırken, bu sütunu DATEDIFF fonksiyonu içinde sadece bir kere kullanmanız daha iyi olabilir.
Ayrıca, MAX(S.DATE_) ifadesini aa CTE'sinde kullanıyorsunuz, ancak bu tarih, LastDate CTE'sindeki MAX_DATE ile aynı mıdır? Eğer aynı değilse, bu iki tarihi birleştirmeniz veya uyumlu hale getirmeniz gerekebilir.
Son olarak, WHERE koşulları arasında AND ve OR bağlaçlarını doğru bir şekilde kullanmalısınız. Bu, filtreleme mantığınızı gözden geçirmeniz gerektiği anlamına gelir.
İşte düzenlenmiş bir versiyon:

WITH LastDate AS (
     SELECT
       S.STOCKREF,
       ISNULL(MAX(S.DATE_),'2022-01-01 00:00:00.000') AS MAX_DATE,
       S.AMOUNT AS adet
     FROM
       LG_123_01_STLINE S
     WHERE
       S.TRCODE = 1 AND
       S.LINETYPE = 0 AND
       S.CANCELLED = 0 AND
       S.DATE_ = (SELECT MAX(DATE_) FROM LG_123_01_STLINE WHERE STOCKREF = S.STOCKREF AND TRCODE = 1 AND LINETYPE = 0 AND CANCELLED = 0)
     GROUP BY
       S.STOCKREF, S.AMOUNT
),
aa AS (
  SELECT
    S.STOCKREF as KOD,
    DATEDIFF(day, MAX(S.DATE_), GETDATE()) AS ISLEMGORMEYENGUN,
    MAX(S.DATE_) as SONSATIS,
    S.AMOUNT AS adet
  FROM
    LG_123_01_STLINE S
  WHERE
    S.TRCODE = 8 AND
    S.CANCELLED = 0 AND
    S.INVOICEREF <> 0
  GROUP BY
    S.STOCKREF, S.AMOUNT
),
DEVIR AS (
  SELECT
    S.STOCKREF as STOCKREF,
    SUM(S.AMOUNT) as Devir
  FROM
    LG_123_01_STLINE S
    LEFT JOIN LG_123_ITEMS I ON I.LOGICALREF = S.STOCKREF
  WHERE
    I.ACTIVE = 0 AND
    I.CARDTYPE = 1 AND
    S.LINETYPE = 0 AND
    S.TRCODE = 14 AND
    S.CANCELLED = 0
  GROUP BY
    S.STOCKREF
)
SELECT
  I.LOGICALREF,
  I.CARDTYPE,
  I.ACTIVE,
  I.STGRPCODE,
  I.KEYWORD5,
  I.B2CCODE,
  I.CODE,
  I.NAME,
  I.IMAGEINC,
  G.ONHAND AS STOK
FROM
  LG_123_ITEMS as I
  LEFT JOIN LV_123_01_GNTOTST G ON G.STOCKREF = I.LOGICALREF AND G.INVENNO = -1
  LEFT JOIN LG_123_PRCLIST P ON P.CARDREF = I.LOGICALREF AND P.PTYPE = 2 AND P.CLSPECODE = 'T01' AND P.ACTIVE = 0
  LEFT JOIN DEVIR as DV on DV.STOCKREF = I.LOGICALREF
  LEFT JOIN LastDate as LD on LD.STOCKREF = I.LOGICALREF
  LEFT JOIN aa as cG ON cG.KOD = I.LOGICALREF
WHERE
  I.ACTIVE = 0 AND
  I.CARDTYPE = 1;
Bu değişiklikler, sorgunun daha düzenli ve anlaşılır olmasını sağlamalıdır. Ancak, bu sadece birkaç olası sorunun ele alınmasıdır, tam olarak isteğinize bağlı olarak daha fazla düzenleme yapmanız gerekebilir.