none
MSSQL Tek Satır getirme ve raporlama RRS feed

  • Soru

  • Merhaba

    Elimde böyle bir tablo var.
    Tablo Adı: FaturaDetay
    -- Toplam Tutar -- Fatura Turu -- Fatura Tarihi --
    354,00 B 2013-08-06
    708,00 B 2013-08-06
    590,00 B 2013-08-06
    490,00 A 2013-08-07

    Yapmak istediğim:
    Eğer Tarihler aynı ise tek bir satır haline getirilecek fakat;
    Tek satırdaki Toplam Tutar bazı durumlara göre değişecek.
    Eğer B ise Toplam Tutardan çıkarılacak değilse eklenecek.
    Söylediğim işlemleri nasıl bir sorgu ile yaptırabilirim?
    Teşekkürler




    14 Ağustos 2013 Çarşamba 15:12

Yanıtlar

  • select Faturatarihi,
     Sum( case when FaturaTuru = 'B' then -1 else 1 end * ToplamTutar ) as ToplamTutar
     from FaturaDetay
     group by FaturaTarihi


    • Düzenleyen CetinBasoz 15 Ağustos 2013 Perşembe 00:06 Duzeltme
    • Yanıt Olarak Öneren Cengiz Gür 15 Ağustos 2013 Perşembe 05:26
    • Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 15 Ağustos 2013 Perşembe 06:09
    15 Ağustos 2013 Perşembe 00:05
  • SELECT  *
    FROM    ( SELECT    MONTH(Faturatarihi) AS Ay ,
                        FaturaTuru ,
                        ( CASE WHEN [FaturaTuru] = 'B' THEN -1
                               ELSE 1
                          END * ToplamTutar ) AS ToplamTutar
              FROM      [FaturaDetay] AS fd
            ) p PIVOT
    ( SUM([p].[ToplamTutar]) FOR [Ay] IN ( "01", "02", "03", "04", "05", "06",
                                           "07", "08", "09", "10", "11", "12" ) ) AS pvt
    

    15 Ağustos 2013 Perşembe 17:15

Tüm Yanıtlar

  • select Faturatarihi,
     Sum( case when FaturaTuru = 'B' then -1 else 1 end * ToplamTutar ) as ToplamTutar
     from FaturaDetay
     group by FaturaTarihi


    • Düzenleyen CetinBasoz 15 Ağustos 2013 Perşembe 00:06 Duzeltme
    • Yanıt Olarak Öneren Cengiz Gür 15 Ağustos 2013 Perşembe 05:26
    • Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 15 Ağustos 2013 Perşembe 06:09
    15 Ağustos 2013 Perşembe 00:05
  • Teşekkürler,sayenizde çözdüm.
    15 Ağustos 2013 Perşembe 14:10
  • Bir şey daha sorabilir miyim?

    Raporlama yapmak istiyorum ama,

    Yazdığınız bu yapıyı Pivot içinde nasıl kullanabilirim?

    SELECT * FROM ( SELECT DATEPART(Month,FaturaTarihi) AS Ay ,FaturaTuru,ToplamTutar AS TT FROM FaturaDetay AS FD ) AS s
    PIVOT
    (
    SUM(TT)
    FOR [Ay] IN ([01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12])
    ) as _pivot

    Teşekkürler 




    15 Ağustos 2013 Perşembe 16:09
  • SELECT  *
    FROM    ( SELECT    MONTH(Faturatarihi) AS Ay ,
                        FaturaTuru ,
                        ( CASE WHEN [FaturaTuru] = 'B' THEN -1
                               ELSE 1
                          END * ToplamTutar ) AS ToplamTutar
              FROM      [FaturaDetay] AS fd
            ) p PIVOT
    ( SUM([p].[ToplamTutar]) FOR [Ay] IN ( "01", "02", "03", "04", "05", "06",
                                           "07", "08", "09", "10", "11", "12" ) ) AS pvt
    

    15 Ağustos 2013 Perşembe 17:15
  • İlginiz için teşekkür ederim.

    İşime yaradı çok teşekkürler.

    15 Ağustos 2013 Perşembe 17:34