我在使用pivot命令嘗試將過濾器應用於查詢時遇到問題。數據透視後的Oracle SQL過濾器行
我使用這個代碼:
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]')
);
而且它我得到一臺這樣的(列名是太大,所以改爲數字)
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
現在我需要過濾我的新表,不要說我只想要列8中具有「00001」的行,但我找不到正確的代碼。
我嘗試這樣做底,但沒有成功(編譯器說,「VALUE」是無效的)
WHERE (NAME, VALUE) IN (
('WTI_UMIDADE' , '00006')
)
感謝您的幫助!
是否有一個名字''WTI_UMIDADE''在'NAME'列?它是**不包含**在'PIVOT'的'IN'列表中,所以與'NAME'相對應的任何值都將在'PIVOT'後完全移除。或者你的意思是''WTI_UMIDADE [0]'等等? – mathguy