[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Odp: Grupowanie



Czy to nie chodzi po prostu o OR?

last-of("pierwszy_substring") or
last-of("drugi_substring")

v_total = 0.
for each tt break by substring(konto,1,1) by substring(konto,3,1):
  v_total = v_total + kwota.
  if last-of(substring(konto,1,1)) or last-of(substring(konto,3,1)) then
  do:
    displ substring(konto,1,1) + "*" + substring(konto,3,1) v_total.
    v_total = 0.
  end.
end.

Pozdrawiam!

Tomasz Judycki

Textus Virtualis Sp. z o.o.
Szaserów 3
04-293 Warszawa
tel/fax (48 22) 879 82 00
http://www.tv.com.pl


Beata Lebryk wrote:
> 
> Chyba sie troche nie zrozumielismy. Opisze to moze jasniej. Mam tablice z
> kontami: 010 020 030 031 041. Dla tych kont mam jakies wartosci. Chodzi mi o
> uzyskanie kwot bedacych sumami dla odpowiednich kont (sumowanie po pierwszym
> i ostanim znaku). Czyli chce uzyskac takie liczby:
> kwote "Razem" dla grupy 0*0, "Razem" 0*1 "Razem" 1*1 itd. Nie interesuja
> mnie podsumowania dla kont z grupy 0**, 1** ani tez dla grup **0, **1.
> 
>  Ja robie to tak:
> 
> for each konto break by substring(konto,1,1) by substring(konto,3,1):
>    if last-of(...)
>       ...
>    end
> end.
> 
> I tu pojawia sie problem, bo jezeli dam if last-of("pierwszy_substring") to
> mam wyniki dla grup 0**,1**,2** itd, a jezeli uzywam
> last-of("drugi_substring") to mam **0,**1,**2.
> Jak zrobic zeby dawal mi wyniki po podwójnym grupowaniu ?
> 
> ----- Wiadomooć oryginalna -----
> Od: Marek Prokop 
> Do: 
> Wysłano: 28 sierpnia 2000 09:55
> Temat: Re: Grupowanie
> 
> Dzien dobry,
> 
> Przy zalaozeniu, ze np. 301-1-10-111 to jedno pole o nazwie klucz,
> mozna sprobowac:
> 
> for each rekord
>    break by substring(klucz,1,3)
>    break by substring (klucz, (length(klucz) - 2,3) :
> .......
> 
> Bedzie to dosyc wolne oczywiscie, bo pewnie nie ma indeksu, ktory to
> wspomaga.
> Zeby przyspieszyc, nalezaloby
> zrobic dwa pola (poczatek i koniec klucza) oraz dwa indeksy - kazdy wg
> jednego
> z tych pol; i przerobic powyzszy FOR EACH na grupowanie wg tych pol, a nie
> wg
> wyrazen z SUBSTRING.
> Pozdrawiam,
> Marek Prokop
> 
> PS. Przy okazji fragment dokumentacji Progressa:
> 
> SUBSTRING (source , position [ , length [ , type ] ] )
> 
> source
> 
> A character expression from where you want to extract characters or bytes.
> 
> position
> 
> An integer expression that indicates the position of the first character you
> want to extract from source.
> 
> length
> 
> An integer expression that indicates the number of characters you want to
> extract from source. If you do not use the length argument or specify -1 as
> the
> length, SUBSTRING uses the remainder of the string from the specified
> position.
> 
> type
> 
> A character expression that directs Progress to interpret the specified
> position and length values as character units, bytes, or columns. A
> double*byte
> character registers as one character unit. By default, Progress interprets
> the
> specified position and length values as character units.
> 
> There are FOUR valid types: "CHARACTER," "FIXED," "COLUMN," and "RAW." The
> expression "CHARACTER" specifies character units. The expression "FIXED"
> specifies that position is in character units and the length is in bytes,
> but
> directs SUBSTRING to yield only whole characters. That is, if the last byte
> or
> bytes represent part of, but not all of, a multi*byte character, these bytes
> are excluded. The expression "COLUMN" specifies display or print
> character*columns. The expression "RAW" specifies bytes. If you specify the
> type as a constant expression, Progress validates the type specification at
> compile time. If you specify the type as a non*constant expression, Progress
> validates the type specification at run time.
> 
> Beata Lebryk wrote:
> 
> > Witam. Mam pewien problem. Posiadam w bazie np. takie rekordy:
> >
> > 301-1-10-111    10 zł
> > 301-1-12-111    20 zł
> > 302-1-10-111    30 zł
> > 302-1-12-112    40 zł
> > 303-1-12-115    50 zł
> > 303-1-15-115    60 zł
> >
> > Muszę pogrupować dane, ale w ten sposób aby uzyskać wyniki:
> > 301-*-**-111    30 zł
> > 302-*-**-111    30 zł
> > 302-*-**-112    40 zł
> > 303-*-**-115    110 zł
> >
> > Chodzi mi więc o uzyskanie kwot po grupowaniu wg 3 pierwszych cyfr i
> trzech
> > ostatnich. Może to banalne pytanie, ale jak to uzyskać ?
> >
> > Z góry dziękuję za pomoc.
> >
> > Pozdrawiam
> > Beata Lebryk

------
Strona WWW:     http://pluton.pol.lublin.pl/pugpl/index.htm
Obsluga listy:  listserv@zeto.bydgoszcz.pl
Archiwum listy: http://www.zeto.bydgoszcz.pl/progress/index.html
------