Hy Jungs zu ersetzen,Mit einer Oracle subselect eine CASE-Anweisung
kann mir jemand bitte helfen Sie mit einer Unterabfrage in Oracle-Datenbank 10g? Ich muss die Werte für eine Spalte in der ersten Tabelle als Wert einer anderen Spalte in der zweiten Tabelle extrahieren. Ich verwende derzeit diese Aussage:
SELECT
CASE WHEN A.column1 = 'A' THEN 'aaa'
WHEN A.column1 = 'B' THEN 'bbb'
.......
WHEN A.column1 = 'X' THEN 'xxx'
ELSE 'bad' END AS COLUMN1, A.*
FROM TRANSACTION_TABLE A, CATEGORY_TABLE B
WHERE A.column1 IS NOT NULL
AND A.column1 <> ' '
Dies ist nicht ein eleganter Ansatz, so versuche ich, ein subselect von CATEGORY_TABLE B wie folgt zu verwenden: So
SELECT A.column1, A.*
FROM TRANSACTION_TABLE A, CATEGORY_TABLE B
WHERE A.column1 IS NOT NULL
AND A.column1 = B.column_b_1
AND A.column1 <> ' '
AND A.column1 IN (SELECT B.column_b_1_descr FROM CATEGORY_TABLE B
WHERE B.FIELDNAME = 'column1' AND A.column1 = B.column_b_1)
, ich kann nicht bekommen Wenn Sie die Unterabfrage verwenden und CASE nicht für viele Bedingungen weiter verwenden möchten, müssen Sie nur die A.column1-Werte durch die deskriptiven Werte von B.column_b_1_descr ersetzen, da diese einfacher zu lesen sind. Ich würde mich über Feedback freuen. Dank
Um zu verdeutlichen, wollen Sie die Zeichenfolge 'aaa' für das Feld 'column1' in der Ausgabezeile, wenn Spalte1 'A' ist, nicht der Wert in der Spalte * genannt * 'aaa', richtig? –