LOGO REÇETE VE ALT MAMÜLLERİ SQL

WITH ItemHierarcyh (STCREF, MAINCREF, CARDTYPE)
AS (
    SELECT STCREF, MAINCREF, CARDTYPE
    FROM LG_123_STCOMPLN
   WHERE MAINCREF = (SELECT I.LOGICALREF FROM LG_123_ITEMS I WHERE I.CODE='RECETE0016') 

    UNION ALL

    SELECT S.STCREF, S.MAINCREF, S.CARDTYPE
    FROM LG_123_STCOMPLN S
    JOIN ItemHierarcyh PH ON S.MAINCREF = PH.STCREF
)
SELECT 
STCREF, 
AltMalzeme=(select I.CODE+'-'+I.NAME from LG_123_ITEMS I WHERE I.LOGICALREF =STCREF),
MAINCREF,
AnaMalzeme=(select I.CODE+'-'+I.NAME from LG_123_ITEMS I WHERE I.LOGICALREF =MAINCREF),
CARDTYPE
FROM ItemHierarcyh  --where CARDTYPE    in (11,12)
OPTION (MAXRECURSION 0)

LOGO SQL İŞYERİ AMBAR BAZLI ANLIK STOKLAR

SELECT
  X.Isyeri,
  X.Ambar,
  x.Stok_Kodu,
  x.Stok_Adı,
  x.MalzemeAciklamasi2,
  x.MalzemeAciklamasi3,
  x.MalzemeAciklamasi4,
  x.[Bırım],
  x.Malzeme_Turu,
  x.GrupKodu,
  x.OzelKod,
  x.OzelKod2,
  x.OzelKod3,
  x.OzelKod4,
  x.OzelKod5,
  Miktar = ROUND(SUM(x.[Miktar]), 4)
FROM (SELECT
  Ambar = (SELECT
    CAST(NR AS varchar) + '-' + NAME
  FROM L_CAPIWHOUSE CAPIWHOUSE
  WHERE CAPIWHOUSE.NR = STLINE.SOURCEINDEX
  AND CAPIWHOUSE.FIRMNR = 211),
  Isyeri = (SELECT
    CAST(NR AS varchar) + '-' + NAME
  FROM L_CAPIDIV CAPIDIV
  WHERE CAPIDIV.NR = STFICHE.BRANCH
  AND CAPIDIV.FIRMNR = 211),
  STFICHE.LOGICALREF [STFICHE_REFERANS],
  Stok_Kodu = ITEMS.CODE,
  Stok_Adı = ITEMS.NAME,
  MalzemeAciklamasi2 = ITEMS.NAME2,
  MalzemeAciklamasi3 = ITEMS.NAME3,
  MalzemeAciklamasi4 = ITEMS.NAME4,
  [Bırım] = BIRIM.CODE,
  Malzeme_Turu =
                CASE ITEMS.CARDTYPE
                  WHEN 1 THEN 'TICARI MAL'
                  WHEN 2 THEN 'KARMA KOLI'
                  WHEN 3 THEN 'DEPOZITOLU MAL'
                  WHEN 4 THEN 'SABIT KIYMET'
                  WHEN 10 THEN 'HAMMADDE'
                  WHEN 11 THEN 'YARI MAMUL'
                  WHEN 12 THEN 'MAMUL'
                  WHEN 13 THEN 'TUKETIM MALI'
                  WHEN 20 THEN 'GENEL MALZEME SINIFI'
                  WHEN 21 THEN 'TABLOLU MALZEME SINIFI'
                  ELSE CONVERT(varchar(20), CARDTYPE)
                END,
  GrupKodu = ITEMS.STGRPCODE,
  OzelKod = ITEMS.SPECODE,
  OzelKod2 = ITEMS.SPECODE2,
  OzelKod3 = ITEMS.SPECODE3,
  OzelKod4 = ITEMS.SPECODE4,
  OzelKod5 = ITEMS.SPECODE5,
  [Miktar] = CAST((CASE
    WHEN STLINE.IOCODE IN (1, 2) THEN 1
    ELSE -1
  END) * STLINE.AMOUNT * (CASE
    WHEN ISNULL(UINFO2, 0) = 0 THEN 1
    ELSE UINFO2
  END) / (CASE
    WHEN ISNULL(UINFO1, 0) = 0 THEN 1
    ELSE UINFO1
  END) AS float)
FROM LG_211_01_STFICHE STFICHE WITH (NOLOCK)
LEFT OUTER JOIN LG_211_01_STLINE STLINE WITH (NOLOCK)
  ON STFICHE.LOGICALREF = STLINE.STFICHEREF
LEFT OUTER JOIN LG_211_ITEMS ITEMS WITH (NOLOCK)
  ON STLINE.STOCKREF = ITEMS.LOGICALREF
LEFT OUTER JOIN LG_211_UNITSETL BIRIM WITH (NOLOCK)
  ON BIRIM.UNITSETREF = ITEMS.UNITSETREF
  AND BIRIM.MAINUNIT = 1
WHERE STFICHE.CANCELLED = 0
AND STLINE.CANCELLED = 0
AND STLINE.LINETYPE = 0
AND STLINE.IOCODE IN (1, 2, 3, 4)

AND STLINE.LPRODSTAT = 0
AND STLINE.DATE_ <= GETDATE()) AS X
GROUP BY X.Isyeri,
         X.Ambar,
         x.Stok_Kodu,
         x.Stok_Adı,
         x.MalzemeAciklamasi2,
         x.MalzemeAciklamasi3,
         x.MalzemeAciklamasi4,
         x.Bırım,
         x.Malzeme_Turu,
         x.GrupKodu,
         x.OzelKod,
         x.OzelKod2,
         x.OzelKod3,
         x.OzelKod4,
         x.OzelKod5

Not: İşyerinin olması akıl karıştırabilir(toplamda bu ambarda şu stok olmalı gibi carpraz kotnrol yapılırsa logodan stok bazen farklı işyerinden düşünce toplam diğer işyerinde olduğu için) dolayısıyla select ve group bydan kaldırılırsa daha sağlıklı kontrol sağlanabilir (ambar şu stok şu)