SQL veri tabanınından bilgi alma

Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
Merhabalar Ekte sunmuş olduğum dosyada SQL veritabanlı bir programdan bilgi çekiyorum. Çektiğim bilgiler.Excell çalışma kitabındadır. Benim yapmak istediğim şey Ben bir Form oluşturmak istiyorum. Her hücredeki alanların belirtilen tarihte toplam değerlerini almak gibi bir form yapmamız mümkünmü Yardımcı olabilirmisiniz.

Örneğin 01-03-2012 ile 20-03-2012 tarihleri arası BÖLGE KODU sütünündaki Karadeniz bölgesinin Toptan satışları Ne kadardır. Birden fazla sütün dan sorgu aldığın için biraz karışık yapamadım
Başka bir örnekte Belirtilen tarih aralarında Cinsi Hücresi Nakit olup Kasa hareket hücresi 100,01,001 olanın Alacak toplamlarını versin
Teşekkürler şimdiden
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
""CARI_HESAPLAR_CHOOSE_2A" isimli table/view' in gerçek alan isimlerini belirtirseniz SQL konusunda yardımcı olabiliriz.
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
834
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Yazmış olduğum sql cümle ile 2 farklı Tablodan veri almak istiyorum ama hata alıyorum.
Cümlenin neresinde yalnış var? Rica etsem yardımcı olurmusunuz ?

SELECT
A.KSMAS_KOD,A.TUTAR,B.KSMAS_NAME,B.KSSONDEV_T,B.KSSONDEV_DOVIZ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) ,
(CASE WHEN(SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))< 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) ELSE 0 END) , (CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END)
FROM
TBLKASA A,TBLKASAMAS B
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
B.KSMAS_NAME,
ORDER BY
A.KSMAS_KOD ASC
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Yazmış olduğum sql cümle ile 2 farklı Tablodan veri almak istiyorum ama hata alıyorum.
Cümlenin neresinde yalnış var? Rica etsem yardımcı olurmusunuz ?

....
Uzun sorgunun içinde kaybolmamak için girintili yazmayı alışkanlık edinin.
Tahminimce aşağıdaki sorguyu yapmaya çalışıyorsunuz...

Soru işareti kullandığım kesişim alan isimlerini doldurun.

Kod:
SELECT 
  DRV1.KSMAS_KOD,
  DRV1.TUTAR,
  DRV1.KSMAS_NAME,
  DRV1.KSSONDEV_T,
  DRV1.KS SONDEV_DOVIZ,
  SUM(DRV1.DOVIZ_G) - SUM(DRV1.DOVIZ_C) AS NET_DOVIZ,
  SUM(DRV1.TUTAR_G) - SUM(DRV1.TUTAR_C) AS NET_TUTAR
 FROM 
 (
  SELECT
   A.KSMAS_KOD,
   A.TUTAR,
   B.KSMAS_NAME,
   B.KSSONDEV_T,
   B.KS SONDEV_DOVIZ,
   CASE WHEN io='g' THEN A.doviztut ELSE 0 END AS DOVIZ_G,
   CASE WHEN io='c' THEN A.doviztut ELSE 0 END AS DOVIZ_C,
   CASE WHEN io='g' THEN A.TUTAR ELSE 0 END AS TUTAR_G,
   CASE WHEN io='c' THEN A.TUTAR ELSE 0 END AS TUTAR_C 
  FROM
   TBLKASA A INNER JOIN TBLKASAMAS B
   ON (A.???? = B.????)
  WHERE
   TARIH BETWEEN '01.01.2012' AND '31.12.2012'
  ) AS DRV1
GROUP BY
 DRV1.KSMAS_KOD,
 DRV1.TUTAR,
 DRV1.KSMAS_NAME,
 DRV1.KSSONDEV_T,
 DRV1.KS SONDEV_DOVIZ
ORDER BY
 DRV1.KSMAS_KOD
 

Mehmet Sait

Altın Üye
Katılım
19 Ekim 2009
Mesajlar
834
Excel Vers. ve Dili
Office 2016 TR
Altın Üyelik Bitiş Tarihi
08-09-2028
Uzun sorgunun içinde kaybolmamak için girintili yazmayı alışkanlık edinin.
Tahminimce aşağıdaki sorguyu yapmaya çalışıyorsunuz...

Soru işareti kullandığım kesişim alan isimlerini doldurun.

Kod:
SELECT 
  DRV1.KSMAS_KOD,
  DRV1.TUTAR,
  DRV1.KSMAS_NAME,
  DRV1.KSSONDEV_T,
  DRV1.KS SONDEV_DOVIZ,
  SUM(DRV1.DOVIZ_G) - SUM(DRV1.DOVIZ_C) AS NET_DOVIZ,
  SUM(DRV1.TUTAR_G) - SUM(DRV1.TUTAR_C) AS NET_TUTAR
 FROM 
 (
  SELECT
   A.KSMAS_KOD,
   A.TUTAR,
   B.KSMAS_NAME,
   B.KSSONDEV_T,
   B.KS SONDEV_DOVIZ,
   CASE WHEN io='g' THEN A.doviztut ELSE 0 END AS DOVIZ_G,
   CASE WHEN io='c' THEN A.doviztut ELSE 0 END AS DOVIZ_C,
   CASE WHEN io='g' THEN A.TUTAR ELSE 0 END AS TUTAR_G,
   CASE WHEN io='c' THEN A.TUTAR ELSE 0 END AS TUTAR_C 
  FROM
   TBLKASA A INNER JOIN TBLKASAMAS B
   ON (A.???? = B.????)
  WHERE
   TARIH BETWEEN '01.01.2012' AND '31.12.2012'
  ) AS DRV1
GROUP BY
 DRV1.KSMAS_KOD,
 DRV1.TUTAR,
 DRV1.KSMAS_NAME,
 DRV1.KSSONDEV_T,
 DRV1.KS SONDEV_DOVIZ
ORDER BY
 DRV1.KSMAS_KOD

Hocam,

Öncelikle zahmet ve uğraşınız için teşekkür ederim. Verdiğiniz kodları denedim ancak tablo boş olarak gelmekte.

SELECT
DRV1.KSMAS_KOD,
DRV1.TUTAR,
DRV1.KSMAS_NAME,
DRV1.KSSONDEV_T,
DRV1.KSSONDEV_DOVIZ,
SUM(DRV1.DOVIZ_G) - SUM(DRV1.DOVIZ_C) AS NET_DOVIZ,
SUM(DRV1.TUTAR_G) - SUM(DRV1.TUTAR_C) AS NET_TUTAR
FROM
(
SELECT
A.KSMAS_KOD,
A.TUTAR,
B.KSMAS_NAME,
B.KSSONDEV_T,
B.KSSONDEV_DOVIZ,
CASE WHEN io='g' THEN A.doviztut ELSE 0 END AS DOVIZ_G,
CASE WHEN io='c' THEN A.doviztut ELSE 0 END AS DOVIZ_C,
CASE WHEN io='g' THEN A.TUTAR ELSE 0 END AS TUTAR_G,
CASE WHEN io='c' THEN A.TUTAR ELSE 0 END AS TUTAR_C
FROM
TBLKASA A INNER JOIN TBLKASAMAS B
ON (A.ksmas_kod = B.ksmas_name)
WHERE
TARIH BETWEEN '2012.01.01' AND '2012.12.31'
) AS DRV1
GROUP BY
DRV1.KSMAS_KOD,
DRV1.TUTAR,
DRV1.KSMAS_NAME,
DRV1.KSSONDEV_T,
DRV1.KSSONDEV_DOVIZ
ORDER BY
DRV1.KSMAS_KOD
--------------------------------------------------

aşagıdaki koda TBLKASAMAS tablosundan KSMAS_NAME sutununu ekletmek için ne yapmalıyız?

SELECT
A.KSMAS_KOD,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))> 0 THEN (SUM(CASE WHEN io='g' THEN A.doviztut ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.doviztut ELSE 0 END))ELSE 0 END) Doviz_miktar,
(CASE WHEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END)) > 0 THEN (SUM(CASE WHEN io='g' THEN A.TUTAR ELSE 0 END)-SUM(CASE WHEN io='c' THEN A.TUTAR ELSE 0 END))ELSE 0 END) BAKÝYE
FROM
TBLKASA A
WHERE
TARIH BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY
A.KSMAS_KOD
ORDER BY
A.KSMAS_KOD ASC
 
Katılım
13 Aralık 2007
Mesajlar
96
Excel Vers. ve Dili
excel 2002
SELECT TOP 100 PERCENT
dbo.fn_FirmaAdi(cha_firmano) AS [FİRMA ADI] /* FİRMA ADI */ ,
dbo.fn_SubeAdi(cha_firmano, cha_subeno) AS [ŞUBE ADI] /* ŞUBE ADI */ ,
dbo.fn_YilAyTr(cha_tarihi) AS [AY] /* AY */ ,
dbo.fn_YilHafta(cha_tarihi) AS [HAFTA] /* HAFTA */ ,
cha_tarihi AS [TARİH] /* TARİH */ ,
dbo.fn_CariHarCins(cha_cinsi) As [CİNSİ] /* CİNSİ */ ,
cha_kod AS [#msg_S_0200], -- CARİ KODU
CASE
WHEN cha_cari_cins=0
THEN (Select cari_grup_kodu FROM dbo.CARI_HESAPLAR WITH (NOLOCK) WHERE cari_kod=cha_kod)
ELSE CAST(dbo.fn_GetResource('M',430,DEFAULT) AS nvarchar(25))
END AS [#msg_S_0471] /* CARİ GRUP KODU */ ,
CASE
WHEN cha_cari_cins=0
THEN (Select cari_bolge_kodu FROM dbo.CARI_HESAPLAR WITH (NOLOCK) WHERE cari_kod=cha_kod)
ELSE CAST(dbo.fn_GetResource('M',430,DEFAULT) AS nvarchar(25))
END AS [#msg_S_0473] /* BÖLGE KODU */ ,
CASE
WHEN cha_cari_cins=0
THEN (Select cari_sektor_kodu FROM dbo.CARI_HESAPLAR WITH (NOLOCK) WHERE cari_kod=cha_kod)
ELSE CAST(dbo.fn_GetResource('M',430,DEFAULT) AS nvarchar(25))
END AS [#msg_S_0474] /* CARİ SEKTÖR KODU */ ,
cha_kasa_hizkod AS [msg_S_0114], -- KASA HAREKET
cha_ciro_cari_kodu AS [#msg_S_1998], --CİRO CARİ KODU
CASE
WHEN cha_tip = 0 --Borç
THEN cha_meblag * cha_d_kur
ELSE 0
END AS [BORÇ],
CASE
WHEN cha_tip = 1 --Alacak
THEN cha_meblag * cha_d_kur
ELSE 0
END AS [ALACAK]
FROM dbo.CARI_HESAP_HAREKETLERI WITH (NOLOCK, INDEX=NDX_CARI_HESAP_HAREKETLERI_02)
Öncelikle İlginize çok teşekkür ederim.
Bağlantı olan SQL sorgum bu şekilde veritabanından bağlantıyla excelle bu Şekilde aktarıyor Alanlarımız bunlardan ibarettin.Benim yapmak istediğim Bir makro oluşturarak bu alanların içinden belirtilen tarih aralıklarında istenilen Alanları toplamak. Tek bir alan dan sorgu olsaydı bunu yapabilirdim. Ama 3 tane alandan bilgi alarak topladığında Yapamıyorum. Örneğin Alanın birisi Tarih,ikinci alan Cari Kodu, üçüncü alan Bölge Kodu Bu üç alanın bilgilerini alıyorsun Dördüncü alan olan borçlar toplamını almak.Nasıl bir formül uygulamam lazım onu bilmiyorum
 
Üst