Umformatieren / Aggregatfunktion ??

Hi,
ich möchte eine Tabelle wie folgt “umformatieren”:

Ursprung:
CODE BETRIEB
1 1111
1 2222
2 2222
2 3333
2 4444

Zieltabelle:
CODE BETRIEB
1 1111 + 2222
2 2222 + 3333 + 4444

Probleme:
A) Gibt es eine Aggregatfunktion die ich nutzen kann ?
every bekomm ich nicht zum laufen…

B) Kann ich da per while-Schleife rangehen ?
Solange sich CODE nicht ändert, fasse zusammen…

  • Frage: Wie müßte die while-Schleife so ungefähr aussehen ?
    habe ja keinen Wert bei dem ich sagen kann, solange i kleiner … ???

Wie würdet ihr das machen ???
Ich dank euch !
v.botz

So:

test=*# select * from bla;
 id |  t
----+------
  1 | bla1
  1 | bla2
  1 | bla3
  2 | foo1
  2 | foo2
(5 rows)

test=*# select id, array_to_string(array_agg(t),' + ') from bla group by id;
 id |  array_to_string
----+--------------------
  1 | bla1 + bla2 + bla3
  2 | foo1 + foo2
(2 rows)

Andreas

suuper,

vielen dank - genau das brauch ich…!!!

Anmerkung: erst ab PostGre Version 8.4

Alla

Jein - geht auch mit älteren Versionen, man muß sich nur eine passende Aggregatfunktion basteln, aber die Doku enthält dafür ein exakt passendes Beispiel.


Andreas

Postgre vs PostgreSQL vs Postgres

“PostGre” ist so wie MerCed, PorSch, OpE, LogiTe, KenWoo, GarMi, SieMen, …

SCNR

okok - ab jetzt PostGres :wink:

hat zum obigen thema aber doch nochmal eine Frage:

> Da meine Anzeige eine [font=&quot]**nichtproportionalen Schrift nutzt sind die Spalten doch wieder nicht immer untereinander.

Ich möchte damit ja sozusagen den Text positionieren…**

array_to_string(array_agg(rpad(“REBE”, 10, ’ ‘)),’ | ') as “REBE”

“Portugiese | Spatburgun | Dunkelfeld | Spatburgun | Riesling”
“Riesling | Johanniter | Portugiese | Spatburgun | Riesling | Riesling”

  • kann ich die Schiftart irgendwo beinflussen ?
  • schöner wäre es natürlich wenn ich es über eine TAB-Steuerung erreichen könnt - gibts da was ??

Alla - Dank euch


[/font]

Hä?

Für hier im Forum? Dafür gibt es "

" und "

", also spitze Klammer auf, code, spitze Klammer zu.

Andreas

Du meinst eckige Klammer nicht spitze, oder? :slight_smile:

[noparse]

Hier kommt der Code

[/noparse]

Edit:
@vollbotz:
Hier ist eine Liste aller Tags die Du verwenden kannst: BB-Code Liste - PG-Forum.de

hmm, hab die [] jetzt mal eingefügt (nochmal als ARRAY!!!) - wirklich passieren tut dann aber nix…
SELECT
“CODE”,
array_to_string (ARRAY [array_agg(rpad(“REBE”, 10, ‘-’))],’ | ’ )
as “REBE”
from akut.pdadaten
group by “CODE”;

Ergebniss bleibt weiterhin gleich, dh die Anzahl der Zeichen stimmt zwar, untereinander sind sie deswegen aber wegen der Schriftart nicht !

“Riesling-- | Johanniter | Portugiese | Spatburgun | Riesling-- | Riesling–”
“Portugiese | Spatburgun | Dunkelfeld | Spatburgun | Riesling–”

hab ich da noch nen denkfehler drin ??

dank für ne antwort…!



"Riesling-- | Johanniter | Portugiese | Spatburgun | Riesling-- | Riesling--"
"Portugiese | Spatburgun | Dunkelfeld | Spatburgun | Riesling--"

Andreas

Du hast ein verwendet, kein

 

[noparse]
[code]
SELECT CODE, 
       array_to_string (ARRAY  [array_agg(rpad("REBE", 10, '-'))],' | ' )  as "REBE" 
from akut.pdadaten 
group by "CODE";

[/noparse]

liefert

SELECT CODE, 
       array_to_string (ARRAY  [array_agg(rpad("REBE", 10, '-'))],' | ' )  as "REBE" 
from akut.pdadaten 
group by "CODE";

[noparse]

"Riesling-- | Johanniter | Portugiese | Spatburgun | Riesling-- | Riesling--"
"Portugiese | Spatburgun | Dunkelfeld | Spatburgun | Riesling--"

[/noparse]

liefert

"Riesling-- | Johanniter | Portugiese | Spatburgun | Riesling-- | Riesling--"
"Portugiese | Spatburgun | Dunkelfeld | Spatburgun | Riesling--"

Das ist alles auch in dem Link beschrieben den ich schon gepostet habe, und der am Ende der Seite unter dem Link “BB-Code” zu finden ist.
Hier nochmal der Link zum durchlesen: http://www.pg-forum.de/misc.php?do=bbcode

Ach ja noch was: innerhalb des Eingabefeldes im Browser wird ein Zeichensatz verwendet der Unterschiedliche Breiten für unterschiedliche Buchstaben verwendet. Dort kannst Du nicht sauber via Leertaste einrücken. Am besten machst Du das in einem Editor der eine Schriftart mit fester Breite (z.B. Courier) verwendet und kopierst den Text dann in das Eingabefeld (zwischen [noparse]


[/noparse] )