在使用pivot命令后尝试将过滤器应用于我的查询时,我遇到了问题。
我正在使用此代码:
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')
)
感谢您的帮助!
答案 0 :(得分:0)
问题是在Pivot之后你的列有新名称
所以你应该使用
WHERE [WTI_UMIDADE] = '00006'
答案 1 :(得分:0)
简单地说:
select * from ( **yourSql** ) where "'dynamicFieldName'" in ('a', 's', 'd')