如何在sql查询中实现if..then条件
我的plsql代码中有一个逻辑,它使用IF-THEN-ELSE逻辑。我想将逻辑移到sql。如何将IF-THEN-ELSE的逻辑转换为SQL plsql逻辑如何在sql查询中实现if..then条件,sql,oracle,plsql,Sql,Oracle,Plsql,我的plsql代码中有一个逻辑,它使用IF-THEN-ELSE逻辑。我想将逻辑移到sql。如何将IF-THEN-ELSE的逻辑转换为SQL plsql逻辑 IF sns.quantity >= 0 /*stage_na_shipment sns*/ THEN l_code := 'O';/*l_code is local variable*/ ELSE l_code := 'C'; END IF; SELECT bt_id INTO l_bt_bt_id FROM bil
IF sns.quantity >= 0 /*stage_na_shipment sns*/
THEN
l_code := 'O';/*l_code is local variable*/
ELSE
l_code := 'C';
END IF;
SELECT bt_id INTO l_bt_bt_id FROM bill_type
WHERE code = l_code
AND ds_ds_id = 1;
如何使用sql执行上述逻辑,我需要将bt.id附加到此查询中
SELECT sns.order_num_cos,
1,
sns.ship_date,
sns.haulier_name,
sns.haulier_num,
sns.ship_date,
sns.order_num_cos,
sf.sf_id,
c.cust_id,
2,
1,
m.mkt_id,
0,
sns.ship_date,
sns.po_number,
sns.ship_date,
bt.bt_id,
sns.ship_date,
sns.stor_loc
FROM stage_na_shipment sns,
market m,
ship_from sf,
customer c,
bill_type bt
WHERE m.code = DECODE(SUBSTR(TO_CHAR(sns.client), 1, 4), 'US23', 'MM', 'US99', 'AFFCO')
AND sf.source_key = sns.ship_from
AND c.true_gcdb_source_key = TO_CHAR(sns.del_point);
基本上,您可以使用select case语句执行此操作,如下所示:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
或通过解码:
SELECT DECODE(sign(sns.quantity),-1,'C','O')
FROM sns
这意味着如果符号(sns.quantity)等于-1,解码函数返回'C',否则返回'O'。基本上,您可以使用select case语句执行此操作,如下所示:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
或通过解码:
SELECT DECODE(sign(sns.quantity),-1,'C','O')
FROM sns
这意味着如果符号(sns.quantity)等于-1,解码函数返回'C',否则返回'O'。基本上,您可以使用select case语句执行此操作,如下所示:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
或通过解码:
SELECT DECODE(sign(sns.quantity),-1,'C','O')
FROM sns
这意味着如果符号(sns.quantity)等于-1,解码函数返回'C',否则返回'O'。基本上,您可以使用select case语句执行此操作,如下所示:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
或通过解码:
SELECT DECODE(sign(sns.quantity),-1,'C','O')
FROM sns
这意味着如果符号(sns.quantity)等于-1,解码函数返回“C”,否则返回“O”。您可以创建如下语法:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
当sns.quantity>=0时选择大小写,然后选择“0”
当sns.quantity<0时,则“C”作为表\u name\u中的lcode结束
由于您的表包含来自另一个表的id,因此您可能必须使用连接
您可以创建如下语法:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
当sns.quantity>=0时选择大小写,然后选择“0”
当sns.quantity<0时,则“C”作为表\u name\u中的lcode结束
由于您的表包含来自另一个表的id,因此您可能必须使用连接
您可以创建如下语法:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
当sns.quantity>=0时选择大小写,然后选择“0”
当sns.quantity<0时,则“C”作为表\u name\u中的lcode结束
由于您的表包含来自另一个表的id,因此您可能必须使用连接
您可以创建如下语法:
SELECT CASE
WHEN sns.quantity >= 0 then 'O'
ELSE 'C'
END l_code
FROM sns
Select case when sns.quantity >= 0 then '0'
when sns.quantity < 0 then 'C' end as lcode from table_name_here
当sns.quantity>=0时选择大小写,然后选择“0”
当sns.quantity<0时,则“C”作为表\u name\u中的lcode结束
由于您的表包含来自另一个表的id,因此您可能必须使用连接
加入bill\u type
表,就像这样
JOIN bill_type bt ON bt.code = CASE WHEN sns.quantity >= 0 THEN 'O' ELSE 'C' END
AND bt.ds_ds_id = 1
现在,ANSI连接语法通常是首选的
请参见并。加入票据类型表,如下所示
JOIN bill_type bt ON bt.code = CASE WHEN sns.quantity >= 0 THEN 'O' ELSE 'C' END
AND bt.ds_ds_id = 1
现在,ANSI连接语法通常是首选的
请参见并。加入票据类型表,如下所示
JOIN bill_type bt ON bt.code = CASE WHEN sns.quantity >= 0 THEN 'O' ELSE 'C' END
AND bt.ds_ds_id = 1
现在,ANSI连接语法通常是首选的
请参见并。加入票据类型表,如下所示
JOIN bill_type bt ON bt.code = CASE WHEN sns.quantity >= 0 THEN 'O' ELSE 'C' END
AND bt.ds_ds_id = 1
现在,ANSI连接语法通常是首选的
见和
您可以用上述代码替换sql代码中的“bt.bt_id”
您可以用上述代码替换sql代码中的“bt.bt_id”
您可以用上述代码替换sql代码中的“bt.bt_id”
您可以用上述代码替换sql代码中的“bt.bt_id”。用例1,否则0结束。尝试用谷歌搜索iTunes案例,然后1或0结束。尝试用谷歌搜索iTunes案例,然后1或0结束。尝试用谷歌搜索iTunes案例,然后1或0结束。试试谷歌吧