SQL根据值进行选择
我需要建议或想法如何解决我的问题。 我已经选择了基于几个连接。 其中一个选定值是ex.SQL根据值进行选择,sql,oracle,if-statement,select,Sql,Oracle,If Statement,Select,我需要建议或想法如何解决我的问题。 我已经选择了基于几个连接。 其中一个选定值是ex.CA.PADDING\u ZERO\u标志,它是“0”或“1” 基于此,我想在select语句中获取其他值 伪代码: Select if(CA.PADDING_ZERO_FLAG = '1') then LPAD(ZR.START_ZIP_CODE, 5, '0'), LPAD(ZR.END_ZIP_CODE, 5, '0') else ZR.START_ZIP_CODE, ZR.END_ZIP_COD
CA.PADDING\u ZERO\u标志
,它是“0”或“1”
基于此,我想在select语句中获取其他值
伪代码:
Select if(CA.PADDING_ZERO_FLAG = '1') then LPAD(ZR.START_ZIP_CODE, 5, '0'),
LPAD(ZR.END_ZIP_CODE, 5, '0') else ZR.START_ZIP_CODE, ZR.END_ZIP_CODE
有可能吗
提前感谢您可以使用解码功能
select
decode(CA.PADDING_ZERO_FLAG,
'1', LPAD(ZR.START_ZIP_CODE, 5, '0'),
'0', ZR.START_ZIP_CODE) START_ZIP_CODE,
decode(CA.PADDING_ZERO_FLAG,
'1', LPAD(ZR.END_ZIP_CODE, 5, '0'),
'0', ZR.END_ZIP_CODE) END_ZIP_CODE
...
案例陈述将适用于此
SELECT
CASE
WHEN CA.PADDING_ZERO_FLAG = '1'
THEN
LPAD(ZR.START_ZIP_CODE, 5, '0')
ELSE
ZR.START_ZIP_CODE
END as 'START_ZIP_CODE',
CASE
WHEN CA.PADDING_ZERO_FLAG = '1'
THEN
LPAD(ZR.END_ZIP_CODE, 5,'0')
ELSE
ZR.END_ZIP_CODE
END as 'END_ZIP_CODE'
我想这会满足你的需要。我想你的查询是错误的,在单格语句中不能有多个列是的,你是对的。我应该把它们分别放在每个专栏的案例陈述中。。。已经编辑过了,你说得对。我还需要在case的内部调用函数来表示邮政编码上的字符,因为它们是数字数据类型,并将列标识符更改为双引号,例如END为“START\u zip\u CODE”