PL/SQL 使用 between 比较更多值
PL/SQL compare more values using between
我的查询有问题。如果它在 2 列之间,我需要比较超过 50 个值。例如,我有两个 varchar 列:
col1 col2
-----------
1000 1999
2000 2999
3000 3999
我有价值观1001, 2001, 3001, 4001
。
如果值在 col1 和 col2 之间,我需要 table 输入数据和 Y
或 N
的列:
input Y/N
-------------
1001 Y
2001 Y
3001 Y
4001 N
我尝试使用 IN(),但不能用于 between。
你能给我一个答案吗?
谢谢
给你。
with
/**You main table data**/
tabl (col1, col2) as( select 1000 ,1999 from dual
UNION ALL
select 2000 ,2999 from dual
UNION ALL
select 3000 ,3999 from dual
),
/**Your Input tale data**/
tabl_inp(val)as ( select 1001 from dual
UNION ALL
select 2001 from dual
UNION ALL
select 3001 from dual
UNION ALL
select 4001 from dual
)
select val INPUT,
case
when (val >= col1 and val <= col2) then
'Y'
ELSE
'N'
END "Y/N"
from tabl
right join tabl_inp
ON val >= col1 and val <= col2 ;
我的查询有问题。如果它在 2 列之间,我需要比较超过 50 个值。例如,我有两个 varchar 列:
col1 col2
-----------
1000 1999
2000 2999
3000 3999
我有价值观1001, 2001, 3001, 4001
。
如果值在 col1 和 col2 之间,我需要 table 输入数据和 Y
或 N
的列:
input Y/N
-------------
1001 Y
2001 Y
3001 Y
4001 N
我尝试使用 IN(),但不能用于 between。 你能给我一个答案吗? 谢谢
给你。
with
/**You main table data**/
tabl (col1, col2) as( select 1000 ,1999 from dual
UNION ALL
select 2000 ,2999 from dual
UNION ALL
select 3000 ,3999 from dual
),
/**Your Input tale data**/
tabl_inp(val)as ( select 1001 from dual
UNION ALL
select 2001 from dual
UNION ALL
select 3001 from dual
UNION ALL
select 4001 from dual
)
select val INPUT,
case
when (val >= col1 and val <= col2) then
'Y'
ELSE
'N'
END "Y/N"
from tabl
right join tabl_inp
ON val >= col1 and val <= col2 ;