Sicht mit dynamischer Anzahl Spalten?

07/11/2008 - 23:36 von Steffen Meyer | Report spam
Hallo zusammen,

ich hab ein Problem, bei dem ich hier auf eine Lösung hoffe. Ich habe einen
MS SQL 2005 Server mit einer Datenbank, in der ich über mehrere Tabellen
eine Sicht erstellen möchte.
Mein Problem ist nun, dass ich eine Sicht brauche, bei der eine Spalte mit
einer Artikelnummer existiert und eine unbestimmte Zahl an Spalten mit
Kalenderwochen. In die jeweilige KW Spalte soll dann eine Menge des Artikels
eingetragen sein.
In der ursprünglichen Tabelle ist die Artikelnummer, die KW und die Menge in
jeweils einer Spalte. Ich möchte also die Menge in eine neu erzeugte Spalte
mit dem Namen/Nummer der KW haben.

Ist:
Artikelnummer KW Menge
Art1 200845 100
Art2 200846 129
Art3 200912 56

Soll:
Artikelnummer 200845 200846 200912
Art1 100
Art2 129
Art3 56

Ich hoffe, dass ich mein Problem entsprechend darlegen konnte.

Gruß
Steffen
 

Lesen sie die antworten

#1 Uwe Ricken
08/11/2008 - 13:05 | Warnen spam
Hallo Steffen,

das geht so einfach nicht. Weder mit einer PIVOT-Table noch mit einem
einigermassen übersichtlichen SQL-Statement.
Drei Alternativen stehen Dir hier zur Verfügung.

1. Direktes SQL (ist aber in Deinem Fall eher nicht zu gebrauchen, da Du ja
nie genau weißt, welche KW es gibt
Beispiel
SELECT ArtikelNummer,
CASE WHEN KW = '200845'
THEN Menge
ELSE NULL
END AS KW_200845,
CASE WHEN ...
Den Rest erspare ich mir.

2. PIVOT Tabelle (ist aber genau so dàmlich, da Du hier auch die Spalten
explizit angeben musst.
3. Dynamische SQL
Diese Variante wird wohl die einzige Möglichkeit sein, um Dein Problem
einigermassen zu fassen.
Dazu habe ich mal einen Vortrag bei Karl Donaubauer auf der AEK gehalten.
Du findest das Script unter

http://www.donkarl.com/AEK/AEKDownl...obleme.zip

Das Script ist zwar aus dem Jahre 2003 aber in Bezug auf Dein Problem immer
noch hoch aktuell.
HTH ;-)


Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH - 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
FAQ: http://www.donkarl.com/AccessFAQ.htm

Ähnliche fragen