Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Server Üzerinden Kümülatif Toplam Gösterimi
#1
2012 ve üstü versiyonlar için 

CREATE TABLE [dbo].[Test](
[Id] [int] NOT NULL,
[Kod] [nvarchar](5) NULL,
[Tarih] [datetime] NULL,
[Tip] [nvarchar](1) NULL,
[Tutar] [decimal](15, 2) NULL,
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (1, N'k01', CAST(0x0000A87A00000000 AS DateTime), N'G', CAST(50.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (2, N'k01', CAST(0x0000A87D00000000 AS DateTime), N'C', CAST(2.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (3, N'k01', CAST(0x0000A87D00000000 AS DateTime), N'C', CAST(4.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (4, N'k02', CAST(0x0000A87F00000000 AS DateTime), N'G', CAST(32.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (5, N'k01', CAST(0x0000A89800000000 AS DateTime), N'G', CAST(15.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (6, N'k02', CAST(0x0000A89800000000 AS DateTime), N'C', CAST(7.00 AS Decimal(15, 2)))
INSERT [dbo].[Test] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (7, N'k01', CAST(0x0000A89900000000 AS DateTime), N'C', CAST(25.00 AS Decimal(15, 2)))
go


select Kod, Tarih, Giris, Cikis, Sum(Tutar) over(order by kod, Tarih, Id) as Toplam 
From (Select Id, Kod, Tarih, Tip, 
            Case When Tip = 'G' Then Tutar Else 0 End Giris,
            Case When Tip = 'C' Then Tutar Else 0 End Cikis,
            Case When Tip = 'G' Then Tutar Else Tutar*-1 End Tutar
       From Test) Tmp
Order By Kod, Tarih, Id
go

Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#2
Farklı bir ornek daha buda 2012 den düşük versiyonlar için

CREATE TABLE [dbo].[TestKumulatifToplam](
[Id] [int] NOT NULL,
[Kod] [nvarchar](5) NULL,
[Tarih] [datetime] NULL,
[Tip] [nvarchar](1) NULL,
[Tutar] [decimal](15, 2) NULL,
CONSTRAINT [PK_TestKumulatifToplam] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (1, N'k01', CAST(0x0000A87A00000000 AS DateTime), N'G', CAST(50.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (2, N'k01', CAST(0x0000A87D00000000 AS DateTime), N'C', CAST(2.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (3, N'k01', CAST(0x0000A87D00000000 AS DateTime), N'C', CAST(4.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (4, N'k02', CAST(0x0000A87F00000000 AS DateTime), N'G', CAST(32.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (5, N'k01', CAST(0x0000A89800000000 AS DateTime), N'G', CAST(15.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (6, N'k02', CAST(0x0000A89800000000 AS DateTime), N'C', CAST(7.00 AS Decimal(15, 2)))
INSERT [dbo].[TestKumulatifToplam] ([Id], [Kod], [Tarih], [Tip], [Tutar]) VALUES (7, N'k01', CAST(0x0000A89900000000 AS DateTime), N'C', CAST(25.00 AS Decimal(15, 2)))
go

If OBJECT_ID('tempdb..#TmpKumule') IS NOT NULL DROP TABLE #TmpKumule
Select ROW_NUMBER() OVER(PARTITION BY Kod ORDER BY Kod, Tarih) as X , Kod, Tarih, Tip, 
           Case When Tip = 'G' Then Tutar Else 0 End Giris,
           Case When Tip = 'C' Then Tutar Else 0 End Cikis,
           Case When Tip = 'G' Then Tutar Else Tutar*-1 End Tutar
into #TmpKumule
From TestKumulatifToplam
Order By Kod, Tarih

select Kod, Tarih, Giris, Cikis, (Select Top 1 Sum(Tutar) from #TmpKumule Where Kod = Tmp.Kod and Tarih <= Tmp.Tarih and X <= Tmp.X) as Toplam
From (Select * from #TmpKumule) Tmp
Order By Kod, Tarih
drop table #TmpKumule

BL17rD.png
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#3
Sadece kod yazmak yerine bu kodun hangi soruna çözüm getirdiği hakkında kısa bir açıklama yazasanız bu konuda çözüm arayan arkadaşlar eminin aramalarda daha kolay ulaşacak, kodu daha iyi yorumlayacak ve sonuç olarak daha faydalı olacaktır.
WWW
Cevapla
#4
(15-03-2018, Saat: 14:38)csunguray Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSadece kod yazmak yerine bu kodun hangi soruna çözüm getirdiği hakkında kısa bir açıklama yazasanız bu konuda çözüm arayan arkadaşlar eminin aramalarda daha kolay ulaşacak, kodu daha iyi yorumlayacak ve sonuç olarak daha faydalı olacaktır.

Kusura bakmayım
Bulunduğum şirkette güvenlik nedeni ile upload işlemleri kapalı bunedenle resim ekleme işlemlerini ancak akşamları evden yapabiliyorum.
Kümülatif toplamı nasıl anlatabilirim tam bilmiyorum başka türlü nasıl ifade edilir.
en fazla başlıkta SQL server üzerinde Kümülatif toplam alma diyebilirim düşüncesindeyim farklı bir öneriniz varsa onuda ekliyelim yazı içerisine
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#5
Kısaca yürüyen bakiye olarak anlatılabilir, her satırdaki "giriş ve çıkışların" veya "borç ve alacakların" birbirine eklenip çıkartılması ile her satırda "kalan" yada "bakiye" gösterimi. Sizin resimdeki "Toplam" yerine "Kalan" yazılması daha uygundur mesela.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQl Server içinde değere göre kontrol yapmak Bay_Y 5 290 22-05-2018, Saat: 23:01
Son Yorum: elixir84
  MSSQL Server Hakkında Bilmek İstedikleriniz esrehmaan 23 2.454 19-02-2018, Saat: 09:57
Son Yorum: klavye
  Sql Server Otomatik Kurulum narkotik 7 481 13-01-2018, Saat: 22:30
Son Yorum: narkotik
  SQL Server veritabanını Suspect & Emergency modundan kurtarmak Abdullah ILGAZ 2 471 23-12-2017, Saat: 08:52
Son Yorum: Abdullah ILGAZ
  SQL Server - Client Güncelleme CaglarCoskun 10 892 14-08-2017, Saat: 11:06
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi