我正在根据变量的结果创建一个带有条件的查询。
- 如果 PROD = 'alpha' 我只需要显示模型 2、3、4、5 和 6;
- 如果 PROD = 'beta' 则只有模型 0 和 1 出现。
DEFINE PROD = 'ALPHA'
SELECT CAR_CODE, CAR, MODELS
FROM TB_CAR_MODELS
WHERE (
CASE PROD
WHEN 'ALPHA' THEN MODELS IN (2,3,4,5,6)
WHEN 'BETA' THEN MODELS IN (0,1)
END
);
我创建了这个查询,但它不起作用。回传错误:
你能帮我吗?谢谢
uj5u.com热心网友回复:
几个示例行:
SQL> select * from tb_car_models;
CAR_CODE CAR MODELS
---------- ---- ----------
1 BMW 2 -- ALPHA
2 Audi 5 -- ALPHA
3 Opel 0 -- BETA
SQL>
当我在 SQL*Plus 中运行它时,我使用了一个替换变量:
SQL> select *
2 from tb_car_models
3 where models in (select models
4 from tb_car_models
5 where models in (2, 3, 4, 5, 6)
6 and '&&prod' = 'ALPHA'
7 union all
8 select models
9 from tb_car_models
10 where models in (0, 1)
11 and '&&prod' = 'BETA'
12 );
Enter value for prod: ALPHA
CAR_CODE CAR MODELS
---------- ---- ----------
1 BMW 2
2 Audi 5
SQL> undefine prod
SQL> /
Enter value for prod: BETA
CAR_CODE CAR MODELS
---------- ---- ----------
3 Opel 0
SQL>
根据您使用的工具,这可能是 eg... and :prod = 'ALPHA'
或类似的。
uj5u.com热心网友回复:
我认为这里有一个很好的答案可以帮助您: 缺少关键字 (ORA-00905) - Oracle SQL Case Statement
检查出。
uj5u.com热心网友回复:
您可以修改您的 sql 陈述句如下:
SELECT CAR_CODE, CAR,
(CASE S.PROD
WHEN CASE S.PROD = 'ALPHA' THEN MODELS IN (2,3,4,5,6)
WHEN CASE S.PROD = 'BETA' THEN MODELS IN (0,1)
END
) MODELS
FROM TB_CAR_MODELS S
0 评论