2016-04-05 6 views
1

Sagen wir, ich habe eine Tabelle wie die untenSQL Query für Feldname, Feldtyp und Feldwert

pp_refno pp_rectype _pp_account pp_empid pp_dept 
--------------------------------------------------------- 
90221  contractor 061509864 C00001121 1111000139 

Gibt es eine Abfrage, die so geschrieben werden, dass die Daten in diesem Format zurückgegeben wird?

field_name   field_type  field_value 
--------------------------------------------------------- 
pp_refno   int    90221 
pp_rectype   char   contractor 
pp_account   char   061509864 
pp_empid   char   C00001121 
pp_dept    char   1111000139 
+0

Nicht in "Standard-SQL", aber es ist wahrscheinlich möglich, wenn Sie es auf einen bestimmten Datenbanksystem Dialekt eingrenzen. –

+3

Die Abfrage hängt von der verwendeten Datenbank ab. Bitte geben Sie Ihre Datenbank an. – atomCode

+0

Welches DBMS benutzen Sie? Postgres? Orakel? –

Antwort

0

Ja, das ist möglich, indem Sie das Informationsschema der von Ihnen verwendeten Datenbank verwenden. Sie müssen jedoch 1 Spalte hinzufügen, um diese für mehrere Zeilen verwenden zu können:

field_name   field_type  field_value  pp_refno 
-------------------------------------------------------------- 
pp_refno   int    90221    90221 
pp_rectype   char   contractor  90221 
pp_account   char   061509864   90221 
pp_empid   char   C00001121   90221 
pp_dept    char   1111000139  90221 

Auf diese Weise können Sie mehrere Datensätze identifizieren.

Sie müssen auch eine spezifische Abfrage für jede Tabelle schreiben oder generieren, die groß und langsam sein kann, da die Daten funktionieren.

Wenn Sie nur einzelne Zeilen abrufen, können Sie auch eine gespeicherte Prozedur verwenden, um Ihre Daten in der angegebenen Weise aufzulisten.

0

Sie können die UNPIVOT-Funktion der SQL-Abfrage verwenden, um dieses Verhalten zu erreichen. Der folgende Link gibt Ihnen mehr über das ähnliche Beispiel.

Example Stackoverflow Link

den Spaltentyp lesen zu können, müssen Sie die sys Tabellen verknüpfen und die Spaltentypen

SELECT DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
TABLE_NAME = 'yourTableName' AND 
COLUMN_NAME = 'yourColumnName' 

Sobald Sie die Entpivotisierung Tabelle alias hat, Sie sollten in der Lage sein, das gleiche bekommen beitreten mit SCHEMA.columns Tabelle und erhalten Sie Ihre Logik implementiert