SQL İçin Yardım
-
Merhaba;
Elimde hesaplar, bu hesaplara ait gerçek kişiler için TCKN , tüzel kişiler için VKN ler var
İstediğim;
Abonelik sahibinin gerçek kişi olması halinde vefat kaydının bulunup bulunmadığının,
Abonelik sahibinin tüzel kişi olması halinde ise ilgili VKN'nin aktif/pasif durumunu göstren SQL kodunu nasıl yazabilirim Bu konuda bana yardımcı olabilirseniz sevinirim
-
Database kolonları lazım hocam at yardımcı olalım. İçeriğe gerek yok yada random içerik sallayabilirsin.
Bu arada, vefat kaydı da elinde değil mi db olarak?
-
hesap acct_id , tckn, vkn , SA_STATUS_FLG hizmet durumu etkin etkin değil gibi ,
CMCUSTYP müşteri tipi gibi
-
Vefat bilgisini nereden alıyorsunuz hocam? Ne kadar detay verebilirsen o kadar yardımcı olabilirim.
-
Hocam şöyle bir şey işini görür. Tablo adını bilmediğim için
ABONE_TABLOSUyazdım, kendi tablo adınla değiştir:SELECT t.ACCT_ID, t.TCKN, t.VKN, t.SA_TYPE_CD, t.MONTH_ID, CASE WHEN TRIM(t.TCKN) IS NOT NULL THEN 'GERÇEK KİŞİ' WHEN TRIM(t.VKN) IS NOT NULL THEN 'TÜZEL KİŞİ' ELSE 'BELİRSİZ' END AS KISI_TIPI, CASE -- Gerçek kişi: vefat kaydı var mı? WHEN TRIM(t.TCKN) IS NOT NULL AND UPPER(t.CMSTOPER) = 'PASIF' THEN 'VEFAT KAYDI VAR' WHEN TRIM(t.TCKN) IS NOT NULL AND UPPER(t.CMSTOPER) = 'AKTIF' THEN 'VEFAT KAYDI YOK' -- Tüzel kişi: VKN aktif mi pasif mi? WHEN TRIM(t.VKN) IS NOT NULL AND UPPER(t.CMSTOPER) = 'AKTIF' THEN 'VKN AKTİF' WHEN TRIM(t.VKN) IS NOT NULL AND UPPER(t.CMSTOPER) = 'PASIF' THEN 'VKN PASİF' ELSE 'DURUM BİLİNMİYOR' END AS DURUM FROM ABONE_TABLOSU t WHERE t.SA_TYPE_CD LIKE 'E%' -- hizmet anlaşması tipi E ile başlayanlar AND t.MONTH_ID = 202611; -- MONTH_ID metinse '202611' yazBirkaç not:
- CMSTOPER değerleri: ‘AKTIF’ / ‘PASIF’ diye varsaydım. Gerçekte ‘A’ / ‘P’, ‘VEFAT’ veya Türkçe karakterli (‘AKTİF’) olabilir. Önce şunu çalıştırıp gerçek değerlere bak, CASE’i ona göre düzelt:
SELECT CMSTOPER, COUNT(*) FROM ABONE_TABLOSU GROUP BY CMSTOPER;- Kişi tipi: TCKN/VKN doluluğuna göre ayırdım. CMCUSTYP (müşteri tipi) daha güvenilirse onun değerlerine göre ayırmak daha doğru olur. Mesela
CASE WHEN t.CMCUSTYP = 'GERCEK' .... - Sadece etkin hizmetler gerekiyorsa WHERE’e şunu ekle (değerini tablodan kontrol et):
AND t.SA_STATUS_FLG = '20'- Aynı hesap birden fazla satırda geliyorsa (bir hesabın birden çok hizmet anlaşması varsa)
SELECT DISTINCTkullan ya da ACCT_ID’ye göre grupla. - Vefat veya VKN durumu ayrı bir tablodaysa ACCT_ID, TCKN ya da VKN üzerinden JOIN gerekir. O zaman o tablonun adını ve kolonlarını at, ona göre düzenleyelim.
-
teşekkür ederim hocam
