SQL de alt toplam olmaz mı? (kırılımlı)
SQL de alt toplam olmaz mı? (kırılımlı)
s.a
bir sp olusturdum
burda bellirli bir gru arasında alt toplam almam gerekiyor bunun ihtimaili yok mu cok ugrastım ama sanırım sql de boyle bir sey yok
vt firebird
ornek
1
2
3
4
----10
50
60
---110
----- 120
gibi
bir sp olusturdum
burda bellirli bir gru arasında alt toplam almam gerekiyor bunun ihtimaili yok mu cok ugrastım ama sanırım sql de boyle bir sey yok
vt firebird
ornek
1
2
3
4
----10
50
60
---110
----- 120
gibi
Merhaba,
MsSql'de
şeklinde bir kod girdiğimizde
21 ay 295 140
21 DC 145 155
NULL 295
şeklinde bir sonuç veriyor. Buradaki püf noktası WITH ROLLUP tır. Ayrıntılı bilgi için http://msdn.microsoft.com/library/defau ... s_9sfo.asp
adresine bakabilirsiniz. Ama firebird için karşılığını bulamadım. Bilen arkadaş varsa yazsa biz de öğrenmiş oluruz.
İyi çalışmalar.
MsSql'de
Kod: Tümünü seç
select VASITA_ADI ,SUM(MIKTAR) from VASITA GROUP BY VASITA_ADI WITH ROLLUP
21 ay 295 140
21 DC 145 155
NULL 295
şeklinde bir sonuç veriyor. Buradaki püf noktası WITH ROLLUP tır. Ayrıntılı bilgi için http://msdn.microsoft.com/library/defau ... s_9sfo.asp
adresine bakabilirsiniz. Ama firebird için karşılığını bulamadım. Bilen arkadaş varsa yazsa biz de öğrenmiş oluruz.
İyi çalışmalar.
Firebirdde Stored procedure kodunu aratoplam verecek şekilde ayarlayabilirsin. Uzun uzun anlatmak yerine örnek veriyorum
her 3 satırda bir aratoplam aldığını göreceksin.
Kod: Tümünü seç
CREATE TABLE TABLO1 (
SAYI INTEGER
);
Kod: Tümünü seç
CREATE PROCEDURE PROC1
RETURNS (
ACIKLAMA VARCHAR(10),
SAYI INTEGER)
AS
DECLARE VARIABLE ARATOPLAM INTEGER;
DECLARE VARIABLE C INTEGER;
begin
c = 0;
aratoplam = 0;
for select SAYI from TABLO1 into :SAYI do begin
ACIKLAMA = 'KAYIT';
ARATOPLAM = ARATOPLAM + SAYI;
suspend;
-- Ara toplam satırını ekler
if (c = 3) then begin
ACIKLAMA = 'ARATOPLAM';
c = 0;
SAYI = ARATOPLAM;
ARATOPLAM=0;
suspend;
end
c = c+1;
end
end
Kod: Tümünü seç
select * from proc1;