Oracle-SQL Trick zum Selektieren einer Spalte im Where


baeri

Erfahrenes Mitglied
#1
Hallo Zusammen,

ich habe eine Tabelle welche etwa so aufgebaut ist
ID, Beschreibung, WERT_001, WERT_002 .. WERT_100, TIMESTAMP

nun möchte ich IM WHERE selektieren welche Spalte ich ausgeben möchte

Idealerweise

SELECT ID, Beschreibung,
CASE irgendwas ... WERT_..., --hier darf gern sehr sehr viel SQL stehen
TIMESTAMP
WHERE 1=1
AND ~irgendwas~ = 34

dann gibt er mir die WERT-Spalte 34 Zurück...

geht sowas?

Vielen Dank
 

baeri

Erfahrenes Mitglied
#2
meine Idee ist ein UNPIVOT und dann einfach mit Zeilen anstelle von Spalten zu arbeiten...
=> allerdings habe ich hier performanceprobleme...
 

Yaslaw

n/a
Moderator
#3
Im WHERE macht keinen Sinn.
Nunja, du kannst einen gigantischen UNION machen und dann im WHERE auswerten.
Schön ist das nicht. Du solltest diene Datenstruktur ändern

SQL:
with normalized_data as (
	select id, wert_001 as value, 1 as value_id from my_table
	union select id, wert_002 as value, 2 as value_id from my_table
	union select id, wert_003 as value, 3 as value_id from my_table
	...
	union select id, wert_100 as value, 100 as value_id from my_table
)
select
	t.id,
	t.timestamp,
	n.value,
	n.value_id
from
	normalized_data n,
	my_table t
where
	n.id = t.id
	and n.value_id = 34