Aşağıda görselde dummy ler ile o ürün grubundan müşterinin ürün alımı olduysa 1 olmadıysa 0 getir denilerek oluşturulmuştur. 1 müşteri, 30 gün içinde tekrar alışveriş yaptıysa veya alışverişi buradaki gibi aynı günde ama farklı saatlerdeyse; her satırda büyük olan dummy i (1=ürün alındı) yazmasını ve tekilleştirmesini istiyorum.
( SELECT CASE WHEN COUNT(*)=0 THEN 0 ELSE 1 END FROM [TepeBI].[T_TEPE_MUSTERI_SATIS] S WHERE S.[UNQ_MUSTERI_ID]=A.[UNQ_MUSTERI_ID] AND S.SIPARIS_TARIHI BETWEEN A.[SIPARIS_TARIHI] AND A.[SIPARIS_TARIHI]+30 ) OTUZ_GUNDE_TEKRAR_SATISI_VAR_MI
30 günde tekrar satışı varsa yukarıdaki gibi ayrı bir değişken oluşturdum ancak aynı tarihli, farklı saatli olan siparişleri görmüyor. Bu sql i nasıl yazabilirim? Yardımcı olabilirseniz çok sevinirim.
Benim yazdığım SQL in tamamı : Burada ihtiyacım olan A.UNQ_MUSTERI_ID=S.UNQ_MUSTERI_ID AND S.SIPARIS_TARIHI>=A.SIPARIS_TARIHI
diyerek ROW 'lu bir değişkenle Yemek, Yatak ve Oturma ve Genç Odası değişkenlerinde büyük olan dummy 'i tek satırda almasını sağlamak.
( SELECT CASE WHEN COUNT(*)=0 THEN 0 ELSE 1 END FROM [TepeBI].[T_TEPE_MUSTERI_SATIS] S WHERE S.[UNQ_MUSTERI_ID]=A.[UNQ_MUSTERI_ID] AND S.SIPARIS_TARIHI >= A.[SIPARIS_TARIHI] ) TEKRAR_SATISI_VAR_MI
FROM
( SELECT SATIS.[UNQ_MUSTERI_ID] ,MAG.[MAGAZA_ADI] ,MAG.[SEHIR] ,SATIS.[SIP_ID] ,MAX(SATIS.SIPARIS_TARIHI) AS SIPARIS_TARIHI ,YEAR([SIPARIS_TARIHI]) AS YIL ,MONTH([SIPARIS_TARIHI]) AS AY
, MAX(CASE WHEN ITEM.AYRIM_NAME = 'Yemek Odaları' OR ITEM.AYRIM_NAME = 'YEMEK ODASI'
THEN 1 ELSE 0 END) AS YEMEK_ODASI , MAX(CASE WHEN ITEM.AYRIM_NAME='Yatak ve Somyalar' OR ITEM.AYRIM_NAME='EBEVEYN ODASI' OR ITEM.AYRIM_NAME='Ebeveyn Yatak Odası'
THEN 1 ELSE 0 END) AS YATAK_ODASI , MAX(CASE WHEN ITEM.AYRIM_NAME='OTURMA ODASI' OR ITEM.AYRIM_NAME='Oturma Odası Takımları'
THEN 1 ELSE 0 END) AS OTURMA_ODASI , MAX(CASE WHEN ITEM.AYRIM_NAME='Genç Odaları' OR ITEM.AYRIM_NAME='ÇOCUK ve GENÇ ODASI'
THEN 1 ELSE 0 END) AS GENC_ODASI
FROM [TepeBI].[T_MTL_ITEM_CATEGORIES] ITEM
INNER JOIN [TepeBI].[T_TEPE_MUSTERI_SATIS] SATIS ON ITEM.[INVENTORY_ITEM_ID] = SATIS.[URUN_ID]
INNER JOIN [TepeBI].[T_MAGAZA_BILGILERI] MAG ON SATIS.[ORG_ID] = MAG.[ORG_ID]
WHERE YEAR([SIPARIS_TARIHI]) >= 2015 AND SATIS.[BI_UPDATE] is null AND MAG.[MAGAZA_BAYII]='MAGAZA'
GROUP BY SATIS.[UNQ_MUSTERI_ID], MAG.[MAGAZA_ADI], MAG.[SEHIR], SATIS.[SIP_ID], YEAR([SIPARIS_TARIHI]), MONTH([SIPARIS_TARIHI]) ) A
ORDER BY A.[UNQ_MUSTERI_ID], A.[SIPARIS_TARIHI]
Çok karışık yazmışsın ne tablo bilgilerin belli ne tablolardaki dataların mevcut.
Nasıl yazılmasını bekliyorsun sadece sorgunu yazarak ? Tahmin mi edeceğiz.
Tabloların create ve insert scriptlerin olsaydı yardım edilirdi.