verwenden Sie sql ausgewählten Werte als Zeile Namen für einen anderen auswählen

Auf einen MSSQL-server, der die Tabellen:

TABLE values {
    int id;
    timestamp date;
    int value;
}

TABLE value_type {
    int value_id; // foreign key on values.id
    text name;
}

Kann ich eine Abfrage wie:

SELECT date, name, value
FROM values
LEFT JOIN value_type ON value_id = id;

und bekommen so etwas wie:

+----------+------+-------+
| date     | name | value |
+----------+------+-------+
| 01.01.10 | foo  |  1.0  |
+----------+------+-------+
| 01.01.10 | bar  |  2.0  |
+----------+------+-------+
| 02.01.10 | bar  |  4.0  |
+----------+------+-------+
| 03.01.10 | foo  |  5.0  |
+----------+------+-------+

Was ist der effizienteste Weg, um die Datenbank abzufragen, wenn ich mag würde, um die Daten so?

+----------+------+-------+
| date     | foo  | bar   |
+----------+------+-------+
| 01.01.10 | 1.0  |  2.0  |
+----------+------+-------+
| 02.01.10 | NULL |  4.0  |
+----------+------+-------+
| 03.01.10 | 5.0  |  NULL |
+----------+------+-------+

Die Struktur der Datenbank ist viel komplizierter, und leider kann ich es nicht ändern.

BEARBEITEN: Die Lösung sollte nicht verwendet foo und bar fest codierte Werte in der Abfrage.

  • Welche version von SQL Server verwenden Sie?
  • Es ist auf einem MS SQL Server 2008
InformationsquelleAutor chris | 2011-01-24
Schreibe einen Kommentar