Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 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ı: 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.

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.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MS SQL Server - Arama Yaklaşık Değerleri Bulma hi_selamlar 5 469 17-01-2024, Saat: 22:53
Son Yorum: Mr.X
  Sql Server Otomatik Kurulum narkotik 11 7.764 21-12-2023, Saat: 14:25
Son Yorum: Bay_Y
  MS SQL server tarih formatı değiştirme MEK 15 5.453 13-09-2022, Saat: 23:19
Son Yorum: MEK
  SQl Server Guruplama ve Toplama Bay_Y 6 3.680 25-02-2021, Saat: 10:39
Son Yorum: Bay_Y
  SQL Server ile offline çalışmak yanniosman 3 2.324 18-02-2021, Saat: 03:12
Son Yorum: mustafaozpinar



Konuyu Okuyanlar: 1 Ziyaretçi