Yardım İL BAZINDA TOPLAM SATIŞLAR

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
132
En iyi yanıt
0
Puanları
18
Yaş
49
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Versiyon
Office 2010
Merhaba,

Aşağıdaki gibi bir satış raporu oluşturmak istiyorum.

İl kodu kısmını Cari kart kodunda SUBSTRING ile alabiliyorum.

İl adını nasıl yazdırabiliriz?

İl bazında nasıl toplam aldırabiliriz?

Örnek sorgu paylaşabilir misiniz?



SQL:
SELECT
SUBSTRING(C.CODE,8,2) 'İL',
L.AMOUNT 'MİKTAR'

FROM
LG_001_01_STLINE L INNER JOIN
LG_001_ITEMS I ON L.STOCKREF = I.LOGICALREF JOIN
LG_001_CLCARD C ON L.CLIENTREF = C.LOGICALREF JOIN
LG_001_01_INVOICE IV ON IV.LOGICALREF = L.INVOICEREF WHERE (L.TRCODE IN (8))
AND I.CARDTYPE =12
 

Ekli dosyalar

  • 1.jpg
    1.jpg
    19.7 KB · Görüntüleme: 2

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
270
En iyi yanıt
4
Puanları
63
Yaş
31
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Versiyon
2019
SQL:
;WITH SEHIR AS
(SELECT '01' plaka, N'Adana'  as adı UNION ALL
SELECT '02' ,N'Adıyaman' UNION ALL
SELECT '03' ,N'Afyon' UNION ALL
SELECT '04' ,N'Ağrı' UNION ALL
SELECT '05' ,N'Amasya' UNION ALL
SELECT '06' ,N'Ankara' UNION ALL
SELECT '07' ,N'Antalya' UNION ALL
SELECT '08' ,N'Artvin' UNION ALL
SELECT '09' , N'Aydın' UNION ALL
SELECT '10' , N'Balıkesir' UNION ALL
SELECT '11' , N'Bilecik' UNION ALL
SELECT '12' , N'Bingöl' UNION ALL
SELECT '13' , N'Bitlis' UNION ALL
SELECT '14' , N'Bolu' UNION ALL
SELECT '15' , N'Burdur' UNION ALL
SELECT '16' , N'Bursa' UNION ALL
SELECT '17' , N'Çanakkale' UNION ALL
SELECT '18' , N'Çankırı' UNION ALL
SELECT '19' , N'Çorum' UNION ALL
SELECT '20' , N'Denizli' UNION ALL
SELECT '21' , N'Diyarbakır' UNION ALL
SELECT '22' , N'Edirne' UNION ALL
SELECT '23' , N'Elazığ' UNION ALL
SELECT '24' , N'Erzincan' UNION ALL
SELECT '25' , N'Erzurum' UNION ALL
SELECT '26' , N'Eskişehir' UNION ALL
SELECT '27' , N'Gaziantep' UNION ALL
SELECT '28' , N'Giresun' UNION ALL
SELECT '29' , N'Gümüşhane' UNION ALL
SELECT '30' , N'Hakkari' UNION ALL
SELECT '31' , N'Hatay' UNION ALL
SELECT '32' , N'Isparta' UNION ALL
SELECT '33' , N'Mersin' UNION ALL
SELECT '34' , N'İstanbul' UNION ALL
SELECT '35' , N'İzmir' UNION ALL
SELECT '36' , N'Kars' UNION ALL
SELECT '37' , N'Kastamonu' UNION ALL
SELECT '38' , N'Kayseri' UNION ALL
SELECT '39' , N'Kırklareli' UNION ALL
SELECT '40' , N'Kırşehir' UNION ALL
SELECT '41' , N'Kocaeli' UNION ALL
SELECT '42' , N'Konya' UNION ALL
SELECT '43' , N'Kütahya' UNION ALL
SELECT '44' , N'Malatya' UNION ALL
SELECT '45' , N'Manisa' UNION ALL
SELECT '46' , N'K.Maraş' UNION ALL
SELECT '47' , N'Mardin' UNION ALL
SELECT '48' , N'Muğla' UNION ALL
SELECT '49' , N'Muş' UNION ALL
SELECT '50' , N'Nevşehir' UNION ALL
SELECT '51' , N'Niğde' UNION ALL
SELECT '52' , N'Ordu' UNION ALL
SELECT '53' , N'Rize' UNION ALL
SELECT '54' , N'Sakarya' UNION ALL
SELECT '55' , N'Samsun' UNION ALL
SELECT '56' , N'Siirt' UNION ALL
SELECT '57' , N'Sinop' UNION ALL
SELECT '58' , N'Sivas' UNION ALL
SELECT '59' , N'Tekirdağ' UNION ALL
SELECT '60' , N'Tokat' UNION ALL
SELECT '61' , N'Trabzon' UNION ALL
SELECT '62' , N'Tunceli' UNION ALL
SELECT '63' , N'Şanlıurfa' UNION ALL
SELECT '64' , N'Uşak' UNION ALL
SELECT '65' , N'Van' UNION ALL
SELECT '66' , N'Yozgat' UNION ALL
SELECT '67' , N'Zonguldak' UNION ALL
SELECT '68' , N'Aksaray' UNION ALL
SELECT '69' , N'Bayburt' UNION ALL
SELECT '70' , N'Karaman' UNION ALL
SELECT '71' , N'Kırıkkale' UNION ALL
SELECT '72' , N'Batman' UNION ALL
SELECT '73' , N'Şırnak' UNION ALL
SELECT '74' , N'Bartın' UNION ALL
SELECT '75' , N'Ardahan' UNION ALL
SELECT '76' , N'Iğdır' UNION ALL
SELECT '77' , N'Yalova' UNION ALL
SELECT '78' , N'Karabük' UNION ALL
SELECT '79' , N'Kilis' UNION ALL
SELECT '80' , N'Osmaniye' UNION ALL
SELECT '81' , N'Düzce' ),
LISTE AS (
SELECT
SUBSTRING(C.CODE,8,2) 'İL',
(SELECT ADI FROM SEHIR as f WHERE F.PLAKA =SUBSTRING(C.CODE,8,2) ) [İl Adı],
L.AMOUNT 'MİKTAR'


FROM
LG_006_01_STLINE L INNER JOIN
LG_006_ITEMS I ON L.STOCKREF = I.LOGICALREF JOIN
LG_006_CLCARD C ON L.CLIENTREF = C.LOGICALREF JOIN
LG_006_01_INVOICE IV ON IV.LOGICALREF = L.INVOICEREF WHERE (L.TRCODE IN (8))
AND I.CARDTYPE =12)




SELECT İL,[İl Adı],SUM(MİKTAR) MIKTAR FROM LISTE GROUP BY İL,[İl Adı]
 

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
132
En iyi yanıt
0
Puanları
18
Yaş
49
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Versiyon
Office 2010
Üstadım merhaba,
Epey uğraşmışsınız, hakkınızı helal ediniz.
Şu an bilgisayar başında olmadığımdan test edemiyorum.
Bu sorgu performans sorunu yaşatır mı?
Şehirler için ayrı bir wiew oluşturup burdan oraya join mi yapmalı?
Hangisi daha iyi olabilir?
 

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
132
En iyi yanıt
0
Puanları
18
Yaş
49
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Versiyon
Office 2010
Merhaba,

Sorgu çok hızlı ve sorunsuz çalıştı... Hakkınızı helal ediniz.

(C.CODE) kısmında aşağıdaki koşulu CASE WHEN ile uygulamak istedim ancak yapamadım.

Yardımcı olabilir misiniz?

Koşul 1-: Eğer C.CODE; 120.10.34.000464 eşit ise sadece "yurt dışı" yazacaktır.

Koşul 2-: Eğer C.CODE (sehir) kısmında olmayan bir kod var ise sadece "yurt dışı" yazacaktır.
 

KVNCYLDZ

Yeni Üye
Katılım
19 Eki 2018
Mesajlar
11
En iyi yanıt
1
Puanları
3
Yaş
41
Konum
Mersin
Ad Soyad
Kıvanç Yıldız
Office Versiyon
Office 2016 TR
Merhaba,

Sorgu çok hızlı ve sorunsuz çalıştı... Hakkınızı helal ediniz.

(C.CODE) kısmında aşağıdaki koşulu CASE WHEN ile uygulamak istedim ancak yapamadım.

Yardımcı olabilir misiniz?

Koşul 1-: Eğer C.CODE; 120.10.34.000464 eşit ise sadece "yurt dışı" yazacaktır.

Koşul 2-: Eğer C.CODE (sehir) kısmında olmayan bir kod var ise sadece "yurt dışı" yazacaktır.
Son FROM'dan önce aşağıdakini yazıp deneyebilir misiniz?
Örneğin ben sorguda 62 numaralı plakayı yurtdışı yaptım.

Fakat benim tavsiyem şu şekilde olacak.
Her cariye il ve sevk ili tanımlama yapılabilir.(Örneğin, İstanbul merkezli bir carinin sevk ili farklı bir il olabilir. Bu durumda Sevk İli kullanmak isteyebilirsiniz.) Cari İli ve Sevk İli ayrı olarak tablolarda tutulur.

Mutlaka Plaka kullanmak isterseniz Plaka alanı Cari kartlar içinde yer almaktadır.

Ayrıca cari kartlarda Yurtiçi, Yurt dışı seçimi de yapılabilir.

Kod:
SELECT
CASE
    WHEN (İL = '62' OR ISNULL(İL,'YURT DIŞI')='YURT DIŞI') THEN 'YURT DIŞI'
ELSE İL
END AS 'İl Plaka',

CASE
WHEN (İL = '62' OR ISNULL([İl Adı],'YURT DIŞI')='YURT DIŞI') THEN 'YURT DIŞI'
ELSE [İl Adı]
END AS 'İl Adı',

SUM(MİKTAR) 'Miktar'
 

Ekli dosyalar

  • 3.JPG
    3.JPG
    46.7 KB · Görüntüleme: 3
  • 2.png
    2.png
    22.2 KB · Görüntüleme: 3
  • 1.JPG
    1.JPG
    34.4 KB · Görüntüleme: 3
  • 4.JPG
    4.JPG
    44.5 KB · Görüntüleme: 2

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
132
En iyi yanıt
0
Puanları
18
Yaş
49
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Versiyon
Office 2010
Merhabalar,
Ayrıntılı yanıt için teşekkür ederim.
Bu son şekli ile sorun çözülmüştür.
Sevkiyat adresi için fatura detay sekmesindeki sevkiyat hesabı kısmını kullanıyoruz. Daha pratik oluyor.
Plaka için ise yurt içi şöyle bir şablon takip ediyoruz. 120.10.plaka kodu.sıra no
Yurt dışında ise 120.10.ülke tel kodu.sıra no
Kolaylıklar dilerim.
 
Üst Alt