Wald vor lauter Bäumen

04/08/2009 - 09:56 von Alexander Bierig | Report spam
Tag,

ich habe gerade ein "siehe Betreff"-Erlebnis:

Zwei Tabellen.
Tabelle Punkte: Name, Tag, Punkte
Tabelle Werte: Tag, Werte

Daten Tabelle Punkte
Alex; 01.01.1900; 123
Bertram; 01.01.1900; 74
Ingo; 01.01.1900; 74
Knut; 01.01.1900; 22

Daten Tabelle
01.01.1900; 274
01.01.1900; 76

gewünschte Ausgabe:
Name, Tag, Punkte, Wert

und nun das besondere:

die beiden Zeilen aus der Wertetabelle sollen zwei beliebigen Zeilen aus der
Punktetabelle zugeordnet werden, es ist vollkommen egal, welchen.

Ergebnis könne so aussehen:
Alex; 01.01.1900; 123; 0
Bertram; 01.01.1900; 74; 274
Ingo; 01.01.1900; 74; 76
Knut; 01.01.1900; 22; 0


irgendwie kriege ich das Ergebnis heute nicht hin


Mit freundlichen Grüssen

Alex. Bierig
(alexander at taxi minus stuttgart dot de)

Ich unterstütze SQL Pass
 

Lesen sie die antworten

#1 Thomas Schremser
04/08/2009 - 10:15 | Warnen spam
Hallo Alexander!

"Alexander Bierig" schrieb:

Daten Tabelle Punkte
Alex; 01.01.1900; 123
Bertram; 01.01.1900; 74
Ingo; 01.01.1900; 74
Knut; 01.01.1900; 22

Daten Tabelle
01.01.1900; 274
01.01.1900; 76

gewünschte Ausgabe:
Name, Tag, Punkte, Wert

und nun das besondere:

die beiden Zeilen aus der Wertetabelle sollen zwei beliebigen Zeilen aus der
Punktetabelle zugeordnet werden, es ist vollkommen egal, welchen.

Ergebnis könne so aussehen:
Alex; 01.01.1900; 123; 0
Bertram; 01.01.1900; 74; 274
Ingo; 01.01.1900; 74; 76
Knut; 01.01.1900; 22; 0



SQL-Server 2005 oder 2008 vorausgesetzt, hilft Dir evtl. die ROW_NUMBER
Funktion weiter:

SELECT
P.Name,
P.Tag,
P.Punkte,
COALESCE(W.Wert, 0) AS Wert
FROM
(
SELECT
Name,
Tag,
Punkte,
ROW_NUMBER()
OVER(PARTITION BY Tag ORDER BY (SELECT 1)) AS Nr
FROM
Punkte
) AS P
LEFT OUTER JOIN
(
SELECT
Tag,
Wert,
ROW_NUMBER()
OVER(PARTITION BY Tag ORDER BY (SELECT 1)) AS Nr
FROM
Werte
) AS W
ON W.Tag = P.Tag
AND W.Nr = P.Nr;

HTH


Grüße
Thomas

Any problem in computer science can be solved with another layer
of indirection. But that usually will create another problem.
David Wheeler

Ähnliche fragen