Tabelle mit fester anordnung

23/08/2009 - 22:27 von Fred Aurich | Report spam
Hallo,

wie erreiche ich eine feste Anordnung?

Ich möchte, dass eine Tabelle in einer festen Anordnung wiedergegeben wird.

Eine Tabelle (B1) hat zwei Felder, "Gruppe" und "Zeile". Ich möchte nun,
dass alle
Gruppen mit allen Zeilen-Nummern ausgegeben werden, (fest die Zeilen
52,53,54 und 55) auch
wenn Gruppe A z.B. keine Zeilennummer 55 enthàlt. Dazu habe ich eine Tabelle
Zeilen (Z),
die nur eine Spalte "Zeile" enthàlt erstellt und sie mit 4 Zeilen gefüllt
Nr. 52, 53 54 55.

Nun wollte ich über eine Relation eine feste Anordnung erreichen.

SELECT convert(char(4),B1.VE)+'-'+convert(char(2),Z.ZEILE) as VE

FROM dbo.ZEILEN Z

left OUTER JOIN dbo.BUDGET1 B1 ON ((Z.ZEILE = B1.ZEILE) or B1.ZEILE is NULL)

group by convert(char(4),B1.VE)+'-'+convert(char(2),Z.ZEILE)

ORDER BY 1

Ich bekomme aber nur die DS angezeigt, bei denen in Tabelle B1 eine
Zeilennummer eingetragen ist.

wo steckt der Fehler???


Tabelle Zeilen:
"Zeile"
52
53
54
55

Tabelle B1:
"VE", "Zeile"
100 53
100 54
500 52
500 55


gewünschte Ausgabe:

"B1.VE", "B1.Zeile","Z.Zeile"
100 NULL 52
100 53 53
100 54 54
100 NULL 55
500 52 52
500 NULL 53
500 NULL 54
500 55 55

Also pro Gruppe immer 4 DS in einer festen Reihenfolge.

Fred.
 

Lesen sie die antworten

#1 Elmar Boye
23/08/2009 - 23:20 | Warnen spam
Hallo Fred,

"Fred Aurich" schrieb..
Ich möchte, dass eine Tabelle in einer festen Anordnung wiedergegeben wird.

Eine Tabelle (B1) hat zwei Felder, "Gruppe" und "Zeile".
Ich möchte nun, dass alle Gruppen mit allen Zeilen-Nummern ausgegeben werden,
(fest die Zeilen 52,53,54 und 55) auch wenn Gruppe A z.B. keine Zeilennummer 55 enthàlt.
Dazu habe ich eine Tabelle Zeilen (Z), die nur eine Spalte "Zeile" enthàlt erstellt
und sie mit 4 Zeilen gefüllt Nr. 52, 53 54 55.

gewünschte Ausgabe:

"B1.VE", "B1.Zeile","Z.Zeile"
100 NULL 52
100 53 53
100 54 54
100 NULL 55
500 52 52
500 NULL 53
500 NULL 54
500 55 55




CREATE TABLE dbo.Zeilen (Zeile int NOT NULL);

INSERT INTO dbo.Zeilen VALUES (52), (53), (54), (55);

CREATE TABLE dbo.B1 (VE int NOT NULL, Zeile int NOT NULL);

INSERT INTO dbo.B1 VALUES
(100, 53), (100, 54),
(500, 52), (500, 55);


SELECT R.VE, B1.Zeile, R.Zeile
FROM (SELECT BVE.VE AS VE, Z.Zeile
FROM ((SELECT DISTINCT B1.VE FROM dbo.B1) AS BVE
CROSS JOIN dbo.Zeilen AS Z)) AS R
LEFT JOIN dbo.B1 ON R.VE = B1.VE AND R.Zeile = B1.Zeile
ORDER BY R.VE, R.Zeile, B1.Zeile

Gruß Elmar

Ähnliche fragen