有可能以某种方式做到这一点吗?
WITH T1 AS
(
SELECT 1 AS SEQ, 'NOTHING 1' AS SOME_TYPE FROM DUAL UNION ALL
SELECT 2 AS SEQ, 'NOTHING 2' AS SOME_TYPE FROM DUAL UNION ALL
SELECT 3 AS SEQ, 'SOMETHING 1' AS SOME_TYPE FROM DUAL UNION ALL
SELECT 4 AS SEQ, 'SOMETHING 2' AS SOME_TYPE FROM DUAL UNION ALL
SELECT 5 AS SEQ, 'SOMETHING 3' AS SOME_TYPE FROM DUAL UNION ALL
select 6 as seq, 'SOMETHING 4' AS SOME_TYPE from dual
)
, T2 AS
(
SELECT 'A' AS COMPARE_TYPE FROM DUAL UNION ALL
SELECT 'B' AS COMPARE_TYPE FROM DUAL
)
SELECT T2.*, T1.*
FROM T1, T2
WHERE CASE T2.COMPARE_TYPE
WHEN 'A'
THEN T1.SOME_TYPE LIKE 'NOTHING%'
ELSE T1.SOME_TYPE NOT LIKE 'NOTHING%'
END
我知道我的 WHERE is 子句不正确。
任何帮助都有助于了解这种类型的陈述是否可行。
我不想编写动态 SQL。如果必须,我将编写 2 条不同的 SQL 语句。
谢谢
感谢您发布示例数据。用文字和实际输出描述您希望查询返回的内容也很有帮助。
我猜你想要类似的东西
但是我对你的代码应该是什么意思做了很多猜测。
这似乎与有人在OTN 论坛中提出的问题相同。我的答案在两个地方都是一样的。
尝试以这种方式编写 where 子句:
Justin Cave 和 Eric Humphrey 的查询都返回不同的结果。这是第三个同样有效的答案,它返回第三组不同的结果:
只有您会知道哪个答案给出了您期望的结果,但它们都是给出的问题的正确答案。
您的问题比许多问题要好,因为它是自包含的并包含源数据,但如果您也包含您正在寻找的输出,它将有所帮助。我建议您将其添加到问题中,并确保接受的答案与这些结果相匹配。