Ich habe ein Problem beim Versuch, einen Filter auf meine Abfrage anzuwenden, nachdem Sie den Pivot-Befehl verwenden.Oracle SQL-Filter Zeilen nach Pivot
Ich verwende diesen Code:
SELECT *
FROM (
SELECT
ovar.object_header_id,
c.name || '[' || oval.sequence || ']' as name,
CASE
WHEN(oval.value_string IS NOT NULL)
THEN TO_CHAR(oval.value_string)
WHEN(cval.value_string IS NOT NULL)
THEN TO_CHAR(cval.value_string)
WHEN(oval.value_number IS NOT NULL)
THEN TO_CHAR(oval.value_number)
WHEN(cval.value_number IS NOT NULL)
THEN TO_CHAR(cval.value_number)
ELSE NULL
END AS value
FROM object_value oval
INNER JOIN object_variant ovar
ON ovar.id = oval.object_variant_id
INNER JOIN characteristic c
ON c.id = oval.characteristic_id
LEFT JOIN characteristic_value cval
ON oval.characteristic_value_id = cval.id
WHERE ovar.object_type_id = 1374
)
pivot (
max(VALUE) for (NAME) in ('WTI_AMBIENTE[0]','WTI_TIPO[0]','WTI_UMIDADE[0]','WTI_LINHA_DE_PRODUTO[0]','WTI_ESPACO[0]','WTI_SUBSTRATO[0]','WTI_COR[0]','WTI_ESQUEMA_TINTA[0]','WTI_UMIDADE[1]','WTI_TIPO_AGUA[0]','WTI_VELOCIDADE[0]','WTI_UMIDADE[2]')
);
Und damit ich bin immer eine Tabelle wie folgt aus (Spaltennamen zu groß war, so zu Zahlen geändert)
1 2 3 4 5 6 7 8 9
-----------------------------------------------------------------------
1003353792 NA 00003 00008 00002 00004 Não Aplica 00001 m10
1003353793 NA 00003 00008 00002 00004 Não Aplica 00001 m11
1003353794 NA 00003 00008 00002 00004 Não Aplica 00001 m1
1003353795 NA 00003 00008 00002 00004 Não Aplica 00002 m14
1003353796 NA 00003 00008 00002 00004 Não Aplica 00002 m15
1003353797 NA 00003 00008 00002 00004 Não Aplica 00001 m12
1003353798 NA 00003 00008 00002 00004 Não Aplica 00002 m13
1003353799 NA 00003 00008 00002 00004 Não Aplica 00002 m18
1003353800 NA 00003 00008 00002 00004 Não Aplica 00001 m19
I Now Ich muss meine neue Tabelle filtern, sagen wir nicht, dass ich nur Zeilen mit "00001" in Spalte 8 möchte, aber ich finde nicht den richtigen Code.
Ich habe versucht, dies am Ende, aber ohne Erfolg (Compiler sagte, dass „VALUE“ nicht gültig ist)
WHERE (NAME, VALUE) IN (
('WTI_UMIDADE' , '00006')
)
Vielen Dank für Ihre Hilfe!
verwenden Gab es einen Namen ' 'WTI_UMIDADE'' in der' name' Spalte? Es ist ** nicht in der 'IN'-Liste von' PIVOT' enthalten **, also werden alle Werte, die diesem 'NAME' entsprechen, nach' PIVOT' vollständig entfernt. Oder meintest du "WTI_UMIDADE [0]" usw.? – mathguy