Forum

Tek Tablo 2 Bağımsı...
 
Bildirimler
Hepsini Temizle

Tek Tablo 2 Bağımsız Koşul İle Sorgulama Yardım

9 Yazılar
2 Üyeler
0 Likes
3,527 Görüntüleme
(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 

SELECT Sum(Stok) , Sum(Satis)  FROM ISLEM Where Tarih = '2013.07.07' Islem Tablosundaki İlk Sorgum

Aynı Tabloda

SELECT Sum(Stok), Sum(Satis) From ISLEM Where Tarih 2013.07.01 AND 2013.07.07

Seklinde İstedigim 2 Veri Sorgulanıyor.

 

Ben Bunu Tek Sorguda Listelemek İstiyorum. 2 Sonucta da Değerin Dönmesi İşin İstenilen Koşullar Birbirinden Farklı

Stok-Satış-Toplam Stok-Toplam Satış Seklinde Listelemek İstiyorum.

Yardımcı Olursanız Sevinirim .  

 
Gönderildi : 11/07/2013 17:52

(@kenanilgun)
Gönderiler: 544
Üye
 

SELECT
*,
CASE
WHEN Sorgu = 'Sorgu1' THEN Sutun1-Sutun2
WHEN Sorgu = 'Sorgu2' THEN Sutun2-Sutun1
END AS Sonuc
FROM
(

SELECT 'Sorgu1' AS Sorgu, Sum(Stok) AS Sutun1 , Sum(Satis) AS Sutun2  FROM ISLEM Where Tarih = '2013.07.07' 
UNION ALL
SELECT 'Sorgu2' AS Sorgu, Sum(Stok) AS Sutun1, Sum(Satis) AS Sutun2 From ISLEM Where Tarih 2013.07.01 AND 2013.07.07

)  AS Sorgu

Sorgularınızı UNION ile birleştirip onu içerisinde alan bir Subquery ile de sonuçlarını üst kısma alıp case ile işlemlerinizi yapabilirsiniz. Yalnız burada toplam dediğini yeri anlayamadım. Excel tipinde daha detaylı bilgi verirseniz yardımcı olurum verdiğim veya sql sorgusunu istediğiniz gibi değiştirerek gerekilen komuta uygun hale getirebilirsiniz.

 
Gönderildi : 11/07/2013 18:22

(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 

İşlemi Hemen Exelde Tablo Örneği İle Anlattım Buyrun  

 
Gönderildi : 11/07/2013 18:46

(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 
SELECT   CASE TAKVIM.KacinciAy WHEN '1' THEN 'OCAK' WHEN '2' THEN 'ŞUBAT' WHEN '3' THEN 'MART' WHEN '4' THEN 'NİSAN' WHEN '5' THEN 'MAYIS' WHEN '6' THEN 'HAZİRAN' WHEN '7' THEN 'TEMMUZ'
                       WHEN '8' THEN 'AĞUSTOS' WHEN '9' THEN 'EYLÜL' WHEN '10' THEN 'EKİM' WHEN '11' THEN 'KASIM' WHEN '12' THEN 'ARALIK' END AS Tarih, TAKVIM.Isgunu AS [İş Günü], 
                      SUM(GUNLUKISLEM.Stok) AS Stok, SUM(GUNLUKISLEM.Satis) AS Satış, SUM(GUNLUKISLEM_AySonu.Satis) AS [Ay Sonu Satış], SUM(GUNLUKISLEM_AySonu.Stok) AS [Ay Sonu Stok], 
                      TAKVIM_AySonu.KacinciAy
FROM         TAKVIM  INNER JOIN
                      TAKVIM AS TAKVIM_AySonu ON TAKVIM.DateNumber = TAKVIM_AySonu.DateNumber  INNER JOIN
                      GUNLUKISLEM INNER JOIN
                      GUNLUKISLEM AS GUNLUKISLEM_AySonu ON GUNLUKISLEM.GunlukId = GUNLUKISLEM_AySonu.GunlukId ON TAKVIM_AySonu.Date = GUNLUKISLEM_AySonu.Tarih
                      WHERE  (TAKVIM.KacinciAy = 1) AND (TAKVIM_AySonu.Isgunu = 4)  OR
                      (TAKVIM.KacinciAy = 2)AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 3)AND (TAKVIM_AySonu.Isgunu = 4)OR
                      (TAKVIM.KacinciAy = 4) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 5) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 6) AND (TAKVIM.Isgunu = 4)  OR
                      (TAKVIM.KacinciAy = 7) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 8)AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 8) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 9) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 9) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 10) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 11) AND (TAKVIM.Isgunu = 4) OR
                      (TAKVIM.KacinciAy = 12) AND (TAKVIM.Isgunu = 4)
GROUP BY TAKVIM_AySonu.KacinciAy, TAKVIM.Isgunu, TAKVIM_AySonu.Isgunu, TAKVIM.KacinciAy
 
Buda Benim Yazdıgım Sorgum 
 
 
Gönderildi : 11/07/2013 18:49

(@kenanilgun)
Gönderiler: 544
Üye
 

Yukarıda UNION ALL ile yaptığım komutu denediniz mi ?

 
Gönderildi : 11/07/2013 22:38

(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 

Sorguları union ile birleştiremiyorum . Sorguları sorunsuz bir biçimde oluşturuldu. İlk sorgu aylık bazda diğeri günlük olarak çalısmakta.

Günlük gösterilen sorgunun yanında  o ayda ki toplamını göstermek amacıyla birleştirilmesi lazım ancak bu sekilde bir birleştirme nasıl yapabilirim bilmiyorum farklı alanlar mevcut. 

 
Gönderildi : 12/07/2013 12:57

(@kenanilgun)
Gönderiler: 544
Üye
 

SQL Sorgunuzu bizimle paylaşabilir misiniz?

 
Gönderildi : 14/07/2013 00:21

(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 
1.Sorgum 
DECLARE @IsGunu INT
SET @IsGunu=4
SELECT     CASE TAKVIM.KacinciAy WHEN '1' THEN 'OCAK' WHEN '2' THEN 'ŞUBAT' WHEN '3' THEN 'MART' WHEN '4' THEN 'NİSAN' WHEN '5' THEN 'MAYIS' WHEN '6' THEN 'HAZİRAN' WHEN '7' THEN 'TEMMUZ'
                       WHEN '8' THEN 'AĞUSTOS' WHEN '9' THEN 'EYLÜL' WHEN '10' THEN 'EKİM' WHEN '11' THEN 'KASIM' WHEN '12' THEN 'ARALIK' END AS Tarih, TAKVIM.Isgunu AS [İş Günü], 
                      SUM(GUNLUKISLEM.Stok) AS Stok, SUM(GUNLUKISLEM.Satis) AS Satış
FROM         TAKVIM INNER JOIN
                      TAKVIM AS TAKVIM_AySonu ON TAKVIM.DateNumber = TAKVIM_AySonu.DateNumber INNER JOIN
                      GUNLUKISLEM INNER JOIN
                      GUNLUKISLEM AS GUNLUKISLEM_AySonu ON GUNLUKISLEM.GunlukId = GUNLUKISLEM_AySonu.GunlukId ON TAKVIM_AySonu.Date = GUNLUKISLEM_AySonu.Tarih
GROUP BY TAKVIM_AySonu.KacinciAy, TAKVIM.Isgunu, TAKVIM.KacinciAy,GUNLUKISLEM .UrunId 
HAVING  (TAKVIM_AySonu.KacinciAy = 1) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 2) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 3) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 4) AND (TAKVIM.Isgunu = @IsGunu) AND GUNLUKISLEM .UrunId =5OR
                      (TAKVIM_AySonu.KacinciAy = 5) AND (TAKVIM.Isgunu =@IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 6) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 7) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 8) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 9) AND (TAKVIM.Isgunu = @IsGunu)AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 10) AND (TAKVIM.Isgunu = @IsGunu) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 10) AND (TAKVIM.Isgunu = @IsGunu) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 11) AND (TAKVIM.Isgunu =@IsGunu) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 12) AND (TAKVIM.Isgunu = @IsGunu)
                    
 2.Sorgum
SELECT    CASE TAKVIM.KacinciAy WHEN '1' THEN 'OCAK' WHEN '2' THEN 'ŞUBAT' WHEN '3' THEN 'MART' WHEN '4' THEN 'NİSAN' WHEN '5' THEN 'MAYIS' WHEN '6' THEN 'HAZİRAN' WHEN '7' THEN 'TEMMUZ'
                       WHEN '8' THEN 'AĞUSTOS' WHEN '9' THEN 'EYLÜL' WHEN '10' THEN 'EKİM' WHEN '11' THEN 'KASIM' WHEN '12' THEN 'ARALIK' END AS Tarih,
             SUM(GUNLUKISLEM.Satis) AS AySonuSatış, SUM(GUNLUKISLEM.Stok) AS AysonuStok
FROM         TAKVIM INNER JOIN
                      TAKVIM AS TAKVIM_AySonu ON TAKVIM.DateNumber = TAKVIM_AySonu.DateNumber INNER JOIN
                      GUNLUKISLEM INNER JOIN
                      GUNLUKISLEM AS GUNLUKISLEM_AySonu ON GUNLUKISLEM.GunlukId = GUNLUKISLEM_AySonu.GunlukId ON TAKVIM_AySonu.Date = GUNLUKISLEM_AySonu.Tarih
GROUP  BY TAKVIM_AySonu.KacinciAy,  TAKVIM.KacinciAy,GUNLUKISLEM .UrunId
HAVING  (TAKVIM_AySonu.KacinciAy = 1) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 2) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 3) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 4) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 5) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 6) AND GUNLUKISLEM .UrunId =5 OR
                      (TAKVIM_AySonu.KacinciAy = 7) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 8) AND GUNLUKISLEM .UrunId =5 OR 
                      (TAKVIM_AySonu.KacinciAy = 9) AND GUNLUKISLEM .UrunId =5  OR 
                      (TAKVIM_AySonu.KacinciAy = 10) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 11) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 12) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 11) AND GUNLUKISLEM .UrunId =5  OR
                      (TAKVIM_AySonu.KacinciAy = 12)AND GUNLUKISLEM .UrunId =5  
 
Gönderildi : 15/07/2013 11:33

(@OguzhanGur)
Gönderiler: 37
Trusted Member
Konu başlatıcı
 

İstenilen sonuç tamamen subquery  yöntemi ile çözülmüştür.

Yardımınız  için çok teşekkürederim. 

 
Gönderildi : 16/07/2013 13:16

Paylaş: