Spalten als Zeichenkette darstellen

Hallo,
ich mache gerade eine Auswertung der im Lager befindlichen Rohstoffe. Es soll jeder im lager befindliche Rohstoff angezeigt werden, der abgelaufen ist. Der Quelltext dazu ist:

SELECT
Buchungseinheiten.ArtikelNr,
Artikelstamm.Artikelbezeichnung,
Buchungseinheiten.ZielCharge,
Sum(Buchungseinheiten.Menge) AS ‚Summe von Menge‘,
Buchungseinheiten.VerfallZielcharge,
Rezepturpositionen.RezepturNr

FROM
quarisPROMIXDaten.dbo.Artikelstamm Artikelstamm,
quarisPROMIXDaten.dbo.Buchungseinheiten Buchungseinheiten,
quarisPROMIXDaten.dbo.Rezepturpositionen Rezepturpositionen

WHERE
Artikelstamm.ArtikelNr = Buchungseinheiten.ArtikelNr
AND Artikelstamm.ArtikelNr = Rezepturpositionen.RohstoffNr

GROUP BY
Buchungseinheiten.ArtikelNr,
Artikelstamm.Artikelbezeichnung,
Buchungseinheiten.ZielCharge,
Buchungseinheiten.VerfallZielcharge,
Rezepturpositionen.RezepturNr,
Buchungseinheiten.Sperrmenge

HAVING
(Buchungseinheiten.VerfallZielcharge

Moin,

sollte ich

Ich will aber als Key die ZielCharge und die Rezepturnummern
nacheinander in ein Feld geschrieben

richtig verstanden haben, dann schreib halt

 SELECT
 Buchungseinheiten.ArtikelNr,
 Artikelstamm.Artikelbezeichnung,
 Buchungseinheiten.ZielCharge & Rezepturpositionen.RezepturNr as XYZ,
 Sum(Buchungseinheiten.Menge) AS 'Summe von Menge',
 Buchungseinheiten.VerfallZielcharge,

Was dabei „als Key“ bedeutet, ist mir allerdings schleierhaft.

Für den Concatenator „&“ nimmst Du den passenden Operator Deines DBMS.

Gruß Ralf

Hallo und danke für die Antwort,

mit Key meine ich Primary Key, also das Merkmal, das eindeutig ist. Mit deinem Vorschlag, wird mir etwas falsches angezeigt. Bisher habe ich eine Tabelle, wo ich alle Daten zu den abgelaufenen Rohstoffen angezeigt bekomme. Es sollen aber auch noch die Rezepturen, die zu den Rohstoffen gehören angezeigt werden. Momentan wird also zu jeder Zielcharge mehrere Zeilen angezeigt, wo jeweils eine andere Rezeptur drin steht. Ich möchte aber, dass nur eine Zeile angezeigt wird, wo in der Spalte Rezeptur alle Rezepturen hintereinander getrennt durch ein Komma angezeigt werden. Also wie bei der Aggregatfunktion Summe, nur eben, dass es um Texte geht, die hintereinander stehen sollen. Hast du dazu eine Idee?

Beispiel (6 Spalten )
aktuell:
00000000006 | Myrj 49 | 53861 | 8,3629999999999995 | 2009-07-30 00:00:00,000 | 06550000012
00000000006 | Myrj 49 | 53861 | 8,3629999999999995 | 2009-07-30 00:00:00,000 | 06550000013
00000000006 | Myrj 49 | 53861 | 8,3629999999999995 | 2009-07-30 00:00:00,000 | 13650000011

so soll es sein:
00000000006 | Myrj 49 | 53861 | 8,3629999999999995 | 2009-07-30 00:00:00,000 | 06550000012, 06550000013, 13650000011

Hi,

mit Key meine ich Primary Key, also das Merkmal, das eindeutig
ist.

nur Tabellen haben einen Key.

dass es um Texte geht, die hintereinander
stehen sollen. Hast du dazu eine Idee?

Nein, das widerspricht auch dem relationalen Ansatz - Verstoß gegen die 1. Normalform. Wenn die Anzahl der Rezepturen konstant ist, dann lässt sich was tricksen, andernfalls gelingt die Darstellung nur per Programmierung.

Getrickst Gemurkst wird so: n Views mit je einer Rezeptur anlegen (wobei ich hier nicht sehe, wodurch die sich unterscheiden), die Werte unterschiedlich benamsen wie R1, R2, R3, …, Rn, und die Werte aus den Views nebeneinander stellen.

Gruß Ralf

Ja ich weiß, dass es der Normalform widerspricht, aber ich brauche es nun mal so. Die Anzahl der Rezepturen sind leider nicht gleich. Die unterscheiden sich sogar sehr stark und liegen irgendwo zwischen 1 und 200. Das lässt sich dann sicherlich auch nicht mit Programmierung machen oder?

Hi,

Die Anzahl der Rezepturen sind leider
nicht gleich. Die unterscheiden sich sogar sehr stark und
liegen irgendwo zwischen 1 und 200. Das lässt sich dann
sicherlich auch nicht mit Programmierung machen oder?

wieso denn nicht, das gehört doch zum täglichen Brot. Hier mal Pseudocode:

 GetFirst Artikel
 While not Artikel.Eof 
 Get Rezeptur\_zum\_Artikel
 While not Rezeptur.Eof
 Rezeptlatte = Rezeptlatte & Rezeptur
 GetNext Rezeptur\_zum\_Artikel
 Wend
 GetNext Artikel 
 Wend

Abgesehen davon, dass so etwas gestrickt werden kann: Welchen Namen willst Du diesem Objekt geben? Welcher arme Knecht soll damit weiterarbeiten?

Gruß Ralf

Jetzt bin ich an meine Grenzen gestoßen. Diesen Pseudocode versteh ich zwar, kann ihn aber nicht SQL-mäßig übersetzen. Könntest du mir den etwas genauer aufschreiben. Heißen soll das Ding (Spaltenname) „Rezepturen“. Wer damit weiterarbeiten soll, wird sich zeigen. Einkauf und Labor wahrscheinlich.

Jetzt bin ich an meine Grenzen gestoßen. Diesen Pseudocode
versteh ich zwar, kann ihn aber nicht SQL-mäßig übersetzen.
Könntest du mir den etwas genauer aufschreiben. Heißen soll
das Ding (Spaltenname) „Rezepturen“. Wer damit weiterarbeiten
soll, wird sich zeigen. Einkauf und Labor wahrscheinlich.

die frege ist, welche programmiersprache kannst du ?
dann kann man das auch genau umsetzen, denn pseudocode heisst nur wie die vorgehensweise ist, der rest gehört dem bereich programmierung.

Diesen Pseudocode

versteh ich zwar, kann ihn aber nicht SQL-mäßig übersetzen.

das kann niemand, weil dieses Zusammenleimen von Zeilenwerten in eine Zeile nur1 per Programm machbar ist - VB, C#, COBOL oder was auch immer.

Könntest du mir den etwas genauer aufschreiben.

Pseudocode ist immer was Erfundenes: Allgemein bekannte Programmelemente wie If, While, For/Next werden mit Klartext zusammengepfriemelt, damit man sich über Programmiersprachen hinweg verständigen kann.

Wer damit weiterarbeiten soll, wird sich zeigen.

Mir sieht das Konstrukt schwer nach einem Wunsch der Anwender aus, die noch gar nicht wissen, was sie brauchen und nicht verstanden haben, dass sich diese Kette aus bis zu 200 Rezepturen nicht maschinell verarbeiten lässt. Red denen mal ins Gewissen.

Gruß Ralf

1Darüber hinausgeht sowas mit Regular expressions, das traue ich mir aber nicht zu.