Problem Statement:Konvertieren verketteten String Spaltennamen in Oracle SQL
Ich habe eine Tabelle mit dem Namen AKTIVITäTEN mit allen Spalten unten einen Datentyp von varchar (20) mit:
|ACTIVITY_NAME| Q1 | Q2 | Q3 | Q4 |
|ACT1 |02/05 |05/10 |08/21 |11/15 |
|ACT2 |01/20 |06/11 |08/06 |10/21 |
Mit diesem Ich möchte das aktuelle Quartal basierend auf dem Systemdatum abrufen, um eine bestimmte Zeile auszuwählen und die Quartalsdaten in das Datum zu konvertieren. Ab jetzt habe ich diese Abfrage, aber ein Fehler wird aufgefordert zu sagen, dass ein nicht-numerisches Zeichen gefunden wurde, wo eine numerische erwartet wurde, die mir eigentlich bekannt ist.
Das Ergebnis der concat() - Funktion ist eine Zeichenfolge, die unten angezeigt wird, deshalb gibt es eine Fehleraufforderung. Jetzt
select to_date('Q4', 'MM/DD')
from activities
where activity_name = 'ACT2';
, Ich suche nach Hilfe, wie die verkettete Zeichenfolge auf einen Spaltennamen zu konvertieren, um für mich, dass bestimmte Daten auf dem laufenden Quartal zu extrahieren und mit der spezifischen Aktivität.
Erwartetes Ergebnis:
Abfrage:
select to_date(Q4, 'MM/DD')
from activities
where activity_name = 'ACT2';
- Q4 Parameter innerhalb to_date() Funktion nun als Spaltenname betrachtet wird, nicht als String. Wie oben in der Problembeschreibung erwähnt, wie kann ich diesen Q4-String-Parameter in einen Spaltennamen konvertieren, so dass ich die Ausgabe unten erhalten kann.
Ausgabe: 08/06/2016
Ich bin neu in Oracle SQL und ich möchte von euch lernen. Schätze wirklich deine Hilfe. Vielen Dank im Voraus.
Danke, ich habe Ihre Nummer:
Um reguläre SQL,
UNION ALL
Klausel verwendet werden müssen, auf diese Weise UNPIVOT Daten. Aber ich habe tatsächlich einen Fehler im Unpivot-Teil, der besagt, dass SQL nicht ordnungsgemäß beendet wurde. Freundlich helfen. Vielen Dank. –Im Moment mit Orakel 10g. –
Ich habe die Antwort mit einem Beispiel aktualisiert, wie Sie Daten in Oracle 10 entpivotieren können – krokodilko