SQL Spalten Sortierung und Zusammenfassung

Code:
postgres=# select * from tab2;
 nummer |  task   | item 
--------+---------+------
      1 | blabla  |  101
      1 | bli bli |  301
      2 | blub    |  101
      2 | blob    |  202
(4 rows)

postgres=# with foo as (select nummer, item, sum(preis * anzahl) from acc group by nummer, item) select * from foo left join tab2 on (foo.nummer, foo.item)=(tab2.nummer, tab2.item);
 nummer | item | sum | nummer |  task   | item 
--------+------+-----+--------+---------+------
      1 |  101 |  32 |      1 | blabla  |  101
      1 |  301 |  14 |      1 | bli bli |  301
      2 |  101 | 192 |      2 | blub    |  101
      2 |  202 |  17 |      2 | blob    |  202
(4 rows)

postgres=#

Sollten in tab2 mehrere Kombinationen für (nummer,item) mit unterschiedlichen task existieren, bekommst natürlich dann mehrere Zeilen. Alternativ kannst Du also auch noch extra auf auf task gruppieren. Das ist das,, was ich Dir versuchen die ganze Zeit zu erklären ...
 
Werbung:
Code:
postgres=# select * from tab2;
 nummer |  task   | item
--------+---------+------
      1 | blabla  |  101
      1 | bli bli |  301
      2 | blub    |  101
      2 | blob    |  202
(4 rows)

postgres=# with foo as (select nummer, item, sum(preis * anzahl) from acc group by nummer, item) select * from foo left join tab2 on (foo.nummer, foo.item)=(tab2.nummer, tab2.item);
 nummer | item | sum | nummer |  task   | item
--------+------+-----+--------+---------+------
      1 |  101 |  32 |      1 | blabla  |  101
      1 |  301 |  14 |      1 | bli bli |  301
      2 |  101 | 192 |      2 | blub    |  101
      2 |  202 |  17 |      2 | blob    |  202
(4 rows)

postgres=#

Sollten in tab2 mehrere Kombinationen für (nummer,item) mit unterschiedlichen task existieren, bekommst natürlich dann mehrere Zeilen. Alternativ kannst Du also auch noch extra auf auf task gruppieren. Das ist das,, was ich Dir versuchen die ganze Zeit zu erklären ...
Okay, ich glaueb jetzt hab ich das verstanden, bedeutet das, dass ich auf task gruppieren kann, obwohl ds in einer anderen Tabelle steht, wenn die Tabelölen verknüpft sind, oder muss ich die Tabellen wie oben gezeigt dann erst verknüpfen?
 
Werbung:
Code:
postgres=# select acc.nummer, acc.item, tab2.task, sum(preis*anzahl) from acc inner join tab2 on acc.nummer=tab2.nummer and acc.item=tab2.item group by acc.nummer, acc.item, tab2.task;
 nummer | item |  task   | sum 
--------+------+---------+-----
      2 |  202 | blob    |  17
      1 |  301 | bli bli |  14
      2 |  101 | blub    | 192
      1 |  101 | blabla  |  32
(4 rows)
 
Zurück
Oben