Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在另一种情况下使用SQL时使用Case_Sql_Database_Oracle_If Statement - Fatal编程技术网

在另一种情况下使用SQL时使用Case

在另一种情况下使用SQL时使用Case,sql,database,oracle,if-statement,Sql,Database,Oracle,If Statement,这是我的SQL中的Select部分的一部分 (CASE WHEN GECIKME_CV(:TAR,B.HESAP_NO, 90, 9999, B.DOVIZ_KOD) AND > 0 THEN 100 ELSE 0 END) AS PROV, (CASE WHEN B.HESAP_NO IN (SELECT HESAP_NO FROM S_TAKIP_MUSTERI) THEN 'E' ELSE 'H' END) AS CAT5, 我想在PROV列中添加此SQL,,如果CAT5='

这是我的
SQL
中的
Select
部分的一部分

(CASE WHEN GECIKME_CV(:TAR,B.HESAP_NO, 90, 9999, B.DOVIZ_KOD) AND  > 0 THEN 100 ELSE 0 END) AS PROV,

 (CASE WHEN B.HESAP_NO IN (SELECT HESAP_NO FROM S_TAKIP_MUSTERI) THEN 'E' ELSE 'H' END) AS CAT5,
我想在PROV列中添加此
SQL
,如果CAT5='E',则PROV=0

如何修改此
SQL

编辑:我是这样想的

(CASE WHEN GECIKME_CV(:TAR,B.HESAP_NO, 90, 9999, B.DOVIZ_KOD) AND  > 0  THEN 100 WHEN B.HESAP_NO IN (SELECT HESAP_NO FROM S_TAKIP_MUSTERI)='E' THEN 100 ELSE 0 END) AS PROV
但它不起作用

EDIT2:为什么这不起作用

(CASE WHEN GECIKME_CV(:TAR,B.HESAP_NO, 90, 9999, B.DOVIZ_KOD) > 0 THEN 100 WHEN  B.HESAP_NO IN (SELECT HESAP_NO FROM S_TAKIP_MUSTERI) THEN 100 ELSE 0 END) AS PROV

您可以将查询用作子查询:

SELECT
(CASE WHEN  CAT5 = 'E' THEN 0 ELSE PROV END) PROV,
CAT5
FROM ( YOUR_QUERY ) anAlias
例如:

SELECT
(CASE WHEN  CAT5 = 'E' THEN 0 ELSE PROV END) PROV,
CAT5
FROM ( 
-- this is your query
SELECT 'E' CAT5, 5 PROV 
-- this is your query
 ) anAlias

用您的查询替换您的查询。在我给出的“来自(你的查询)anAlias”的查询中,你为什么说它不起作用?您会收到什么错误消息?