SQL de alt toplam olmaz mı? (kırılımlı)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

SQL de alt toplam olmaz mı? (kırılımlı)

Mesaj gönderen musti »

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
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

UNION kullanarak yapabilirsin.

UNION hakkında arama yaparsan forumda gerekli açıklamaları bulabilirsin.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

:idea:
tsk ler.
uniınu bu konu icin kullanacagimida ogrendim sagolun(cast ile hic kullanmamıstım ve bire bir eşiliyorudum alanları )

ama benim amacım bir kriter olmadan kırılımlı toplam alma idi
cunku sonucu sp icine koyuyorum ve bir table de yok degerler hesaplama sonucu geliyor.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba..
musti yazdı::idea:
ama benim amacım bir kriter olmadan kırılımlı toplam alma idi
.
Bir kriter olmadan aşağıdaki sonucu nasıl alabilirsin ki? :roll:
1
2
3
4
----10
50
60
---110

----- 120
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

soyle yani
bu bir sp

dolayısıyle sunu diyemem union where sunlar arasını topla o zaman o sp ikiere calismis olacak yavas kalır
ben ise

sp ile donen sonucun kırılım toplamlarını almak istiyorum yani
union u sp ile kullanmbilirsem bu olur ik 4 unu topla gibi
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,

MsSql'de

Kod: Tümünü seç

select VASITA_ADI ,SUM(MIKTAR)  from VASITA GROUP BY VASITA_ADI WITH ROLLUP

ş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.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

tks ederim bu da isimi gorur bir arasirayim bakalim firebird icin aynı olay olurmu
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Firebirdde Stored procedure kodunu aratoplam verecek şekilde ayarlayabilirsin. Uzun uzun anlatmak yerine örnek veriyorum

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;
her 3 satırda bir aratoplam aldığını göreceksin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

:eyo:

tsk.
Cevapla