Immer gleiches Ergebnis

Hallo

ich habe folgendes Problem:

ich muß Werte aus aus einer Tabelle groupieren, als Ergebnis müssen aber immer 3 Datensätze folgen.

1 Tabelle
A Adam
B Berta
C Casper

2 Tabelle
A 4
B 2
A 2

Ergebins soll sein:

Adam 8
Berta 2
Casper 0

Vielen Dank für eine Lösung!

Mein select ist natürlich etwas komplexer, aber für einen Lösungsansatz sollte das Bsp. reichen. :wink:

Hi!

Das Ergebnis ist mir leider nicht ganz klar, daher erst einmal eine normale Gruppierung über den Namen aus der ersten Tabelle, wobei die Zahlen aus der zweiten Tabelle dann aufsummiert werden:

select t1.name, sum(t2.zahl)
from tabelle_1 t1, tabelle_2 t2
where t1.ID = t2.ID
group by t1.name;

Dabei kommt natürlich nicht das Ergebnis 8 bei Adam heraus. WIllst Du stattdessen die Zahlen aus der zweiten Tabelle multiplizieren?
Ich hatte für obige Lösung vorausgesetzt, dass Du die Zahlen aus der zweiten Tabelle mit den jeweils gleichen Buchstaben aus der ersten Tabelle aufsummieren willst für den jeweiligen Namen mit dem gleichen Buchstaben.

Durch das „group by t1.name“ erhälst Du für jeden Namen eine Ergebniszeile.

Ach so: SQL-Syntax - oracle

Trifft es das ?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

HI,

ich schreib’s mal kompliziert „nach ANSI“:

select tbl1.col2, sum(tbl2.col2
from tbl1 left join tbl2 on tbl1.co1 = tbl2.col1
group by tbl1.col2

Gruß
Clemens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

in meinem Ergebnis habe ich einen Rechenfehler, sorry!

Adam 6 Natürlich!
Berta 2
Casper 0

nocheinmal mein Problem etwas koplexer!

Ich habe eine tabelle mit Lieferscheindaten

Firma Artikel Menge Datum usw.
01 3434 12 1.02.2004
01 3333 34 2.02.2004
02 2424 32 5.02.2004
01 3434 10 5.02.2004
01 2424 22 5.02.2004
03 1111 10 2.02.2004

Ich möchte jetzt die summe(menge) von einem bestimmten Artikel im
Monat bei allen drei Firmen mit der Bedingung das immer 3 Datensätze
als Ergebnis angezeigt werden.
DB ist Oracle 9.2.0.2
Artikel 2424

select Firma, Artikel, Sum(Menge), to_char(Datum, ‚MM-YY‘)
from tabelle
where artikel=2424
group by Firma, Artikel, to_char(Datum, ‚MM-YY‘);

Ergebnis
02 2424 32 02-04
01 2424 22 02-04

ICH BRAUCHE ABER
01 2424 22 02-04
02 2424 32 02-04
03 2424 0 02-04

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hast Du neben der Artikeltabelle eine Tabelle mit den (fürs Ergebnis gewünschten) Firmen? Dann wäre es recht einfach. Dann könntest Du einen outer-join dagegen machen.

Mit oracle kann man das ggf. auch mit entsprechenden speziellen Gruppierungsfunktionen realisieren, diese müsste ich aber am Montag selber raussuchen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Montag morgen in aller Frische. Am Wochenende habe ich nicht richtig nachgedacht:

Benutz einfach einen OUTER JOIN gegen die Artikeltabelle selber mit Firma als OUTER-JOIN-Verknüpfung und ohne Einschränkung auf den Artikel bei der zweiten Benutzung der Artikeltabelle.

So in der Art:
select t2.Firma, sum(t1.transaction)
from tabelle t2, tabelle t1
where t1.Artikel(+) = 2424
and t1.Firma(+) = t2.Firma
group by t2.Firma;

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke an alle, habe Lösung mit UNION
Danke an alle, habe Lösung mit UNION

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]