[英]How to write query to return value regardless of existance?
鑒於這種:
with data_row as (select 1 as col_1 from dual)
select 'Y' as row_exists from dual where exists
(select null
from data_row
where col_1 in (2,1))
我怎么能得到這個?
Col_1 Row_exists
--------------------
1 Y
2 N
要獲得一行輸出,您需要一行輸入。 您希望第二行顯示“2”,但沒有包含該值的表。
方法是生成一個具有所需值的表,然后使用left outer join
來查找匹配項:
with data_row as (
select 1 as col_1
from dual
),
what_i_care_about as (
select 1 as col from dual union all
select 2 from dual
)
select wica.col,
(case when dr.col_1 is NULL then 'N' else 'Y' end) as row_exists
from what_i_care_about wica left outer join
data_row dr
on wica.col = dr.col_1;
這是創建一個列在每個缺失值-你想要什么,你不能直接做in
列表中。 如果您有很多值並且它們是連續數字,那么您可以使用connect by
或遞歸CTE來生成值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.