Forum

Sql Sorgu isteği
 
Bildirimler
Hepsini Temizle

Sql Sorgu isteği

6 Yazılar
2 Üyeler
0 Likes
445 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

SELECT TOP (100) PERCENT STOK_KODU, COALESCE (SUM(CASE WHEN kod1 = 'G' THEN kod2 ELSE 0 END), 0)
- COALESCE (SUM(CASE WHEN kod1 = 'C' THEN kod2 ELSE 0 END), 0) AS StokToplam1

FROM s_hareket
WHERE (STOK_KODU BETWEEN '01001' AND '75000') and (tarih BETWEEN '2011-01-01' and '2011-06-30')

GROUP BY STOK_KODU ORDER BY STOK_KODU

sorgumla ilk 6 aydaki stok toplamlarımı listeleyebiliyorum,burada yapmak istediğim aynı sorgu içerisinde 2. altı ayıda listelemek bunu nasıl yapabilirim?

stokkodu | 1. ay | 2. 6ay

bu şekilde sorgumun gelmesini istiyorum.

 
Gönderildi : 12/09/2011 14:34

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

 dateadd ve getdate fonksiyonlarını kullanarak yapabilirsiniz.

 SELECT TOP ( 100 ) PERCENT
        STOK_KODU ,
        COALESCE(SUM(CASE WHEN kod1 = 'G' THEN kod2
                          ELSE 0
                     END), 0) - COALESCE(SUM(CASE WHEN kod1 = 'C' THEN kod2
                                                  ELSE 0
                                             END), 0) AS StokToplam1
FROM    s_hareket
WHERE   ( STOK_KODU BETWEEN '01001' AND '75000' )
        AND ( tarih BETWEEN dateadd(month,-6,GETDATE()) AND GETDATE() )
GROUP BY STOK_KODU
ORDER BY STOK_KODU

 Ve ya , sorunuzu doğru anladıysam sonuçları UNION yapmak istiyorsanız , o zaman aşağıdaki gibi yapabilirsiniz.

SELECT * FROM
    (SELECT TOP ( 100 ) PERCENT
            'last' AS t
            STOK_KODU ,
            COALESCE(SUM(CASE WHEN kod1 = 'G' THEN kod2
                              ELSE 0
                         END), 0) - COALESCE(SUM(CASE WHEN kod1 = 'C' THEN kod2
                                                      ELSE 0
                                                 END), 0) AS StokToplam1
    FROM    s_hareket
    WHERE   ( STOK_KODU BETWEEN '01001' AND '75000' )
            AND ( tarih BETWEEN dateadd(month,-6,GETDATE()) AND GETDATE() )
    GROUP BY STOK_KODU
    ORDER BY STOK_KODU

    UNION ALL
    SELECT TOP ( 100 ) PERCENT
            'first' AS t
            STOK_KODU ,
            COALESCE(SUM(CASE WHEN kod1 = 'G' THEN kod2
                              ELSE 0
                         END), 0) - COALESCE(SUM(CASE WHEN kod1 = 'C' THEN kod2
                                                      ELSE 0
                                                 END), 0) AS StokToplam1
    FROM    s_hareket
    WHERE   ( STOK_KODU BETWEEN '01001' AND '75000' )
            AND ( tarih BETWEEN '2011-01-01' and '2011-06-30' )
    GROUP BY STOK_KODU
    ORDER BY STOK_KODU) AS sourceTable
PIVOT (
    SUM(StokToplam1)
    FOR T IN ([first], [last])
) AS p

Saygılar,

 
Gönderildi : 12/09/2011 18:45

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

a

 
Gönderildi : 13/09/2011 13:33

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

söylediğinizi yaptım fakat

   'last' AS t  burada hata veriyor

 
Gönderildi : 13/09/2011 13:34

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

 

SELECT * FROM
    (SELECT TOP ( 100 ) PERCENT
            'last' AS t,
            STOK_KODU ,
            COALESCE(SUM(CASE WHEN kod1 = 'G' THEN kod2
                              ELSE 0
                         END), 0) - COALESCE(SUM(CASE WHEN kod1 = 'C' THEN kod2
                                                      ELSE 0
                                                 END), 0) AS StokToplam1
    FROM    s_hareket
    WHERE   ( STOK_KODU BETWEEN '01001' AND '75000' )
            AND ( tarih BETWEEN dateadd(month,-6,GETDATE()) AND GETDATE() )
    GROUP BY STOK_KODU
    ORDER BY STOK_KODU

    UNION ALL
    SELECT TOP ( 100 ) PERCENT
            'first' AS t,
            STOK_KODU ,
            COALESCE(SUM(CASE WHEN kod1 = 'G' THEN kod2
                              ELSE 0
                         END), 0) - COALESCE(SUM(CASE WHEN kod1 = 'C' THEN kod2
                                                      ELSE 0
                                                 END), 0) AS StokToplam1
    FROM    s_hareket
    WHERE   ( STOK_KODU BETWEEN '01001' AND '75000' )
            AND ( tarih BETWEEN '2011-01-01' and '2011-06-30' )
    GROUP BY STOK_KODU
    ORDER BY STOK_KODU) AS sourceTable
PIVOT (
    SUM(StokToplam1)
    FOR T IN ([first], [last])
) AS p

 

böyle olacak. Sadece ','  unutmuşum.Bunun için özür dilerim.

 

saygılar,

 
Gönderildi : 14/09/2011 18:05

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Asıl Ben sizden özür dilerim bu kadar kolay bir hatayı gözden kaçırıp size tekrar sorduğum için cevabınız için tekrar teşekkür ederim,

 

 
Gönderildi : 14/09/2011 19:18

Paylaş: