SQL SERVER 2005 - Doppeltes PIVOT

kingbaba

Grünschnabel
Hallo zusammen,

wir haben in unserer Datenbank eine sogenannte Sprachtabelle die die Texte in den verschiedenen Sprachen beinhaltet. In dieser Tabelle wird per Code und der aktuell ausgewählten Sprache nach dem Text gesucht.
Die Tabelle, ihr Name ist "TEXTE" sieht ungefähr so aus:
Code:
Id (int, pk)
Code (nvarchar(50))
Sprache (nvarchar(2))
Text (nvarchar(250))
Datum (datetime) - Hier wird gespeichert wann der Datensatz das letzte mal geändert wurde.

Datensätze wären somt z.B.
Code:
Id        | Code               | Sprache   | Text                | Datum
1         | Button1           | de              | Speichern    |  21.03.2010 09:45:12
2         | Button1           | en              | Save              |  24.06.1009 11:14:59
....         .....                    .....               .....

Ich habe es geschaft mit folgender PIVOT Abfrage folgendes Ergebnis zu erziele:
Code:
Abfrage:
SELECT     [ Code ], DE, EN
FROM         (SELECT     Code, Sprache, Text
                       FROM          TEXTE)
ps PIVOT (
                 MIN([Text]) 
                 FOR [Sprache] 
                 IN ([de], [en])
                 ) 
AS pvt
Code:
Ergebnis:
Code           | DE                  | EN
Button1       | Speichern     | Save

Und jetzt kommt mein Problem. Ich will jetzt auch noch das Datum angezeigt haben so das die Ausgabe des Statements ungefähr so aussieht.
Code:
Code       |    DE                  | DE_DATUM                     | EN          | EN_DATUM
Button1   |    Speichern     | 21.03.2010 09:45:12     | Save       |24.06.1009 11:14:59

Weiss jemand wie man die PIVOT Abfrage formulieren muss um dieses Ergebnis zu bekommen.

Bitte bitte helft mit ich brauch diese Lösung echt dringend.

Danke schon mal im vorraus.


PS: Sry ich habe echt versucht das hier übersichtlich zu gestalten aber es ist mir nicht gelungen. Bei den Datenausgaben der Tabellen habe ich die Spalten mit einem | getrennt. Ich hoffe das ist verständlicher als ohne....
 
Zuletzt bearbeitet:
Vielleicht sollte ich noch ergänzen, dass für mich keine Lösung in Frage kommt die z.B. Zwei Views per INNER JOIN o.ä. zusammen führt.

Es sollte schon alles in einem SQL-Statement passieren da ansonsten die Performence starke leiden würde.
 
So knapp zwei Stunden nach dem ich die Frage gestellt hab bin ich selber auf die Lösung gekommen.

Man muss sich halt nur mal mit etwas anderem beschäftigen dann fällt einem sowas sofort ein ;)

Also zur Lösung des Problems muss in dem inneren Select ein zweites Select gemacht werden welches das Datum als Text ausgibt und an die Sprache sollte noch ein kürzel gehängt werden. Dann kann man mit UNION diese beiden Selects verbinden und von der PIVOT umsortieren lassen.

Will wer das SQL Statement sehen?:-)
 
Zurück