Sql 带if语句的Oracle数据库查询

Sql 带if语句的Oracle数据库查询,sql,oracle,case,Sql,Oracle,Case,我对这个查询有问题 SELECT codigo clave, descrip valor CASE WHEN codigo IS NOT NULL THEN SELECT codigo clave, codigo || ' - ' || descrip valor ELSE CASE WHEN codigo IS NULL SELECT cod

我对这个查询有问题

SELECT 
    codigo clave, descrip valor
    CASE 
       WHEN codigo IS NOT NULL 
          THEN SELECT codigo clave, codigo || ' - ' || descrip valor
       ELSE
          CASE 
             WHEN codigo IS NULL  
                SELECT codigo clave, descrip valor
          END
我需要把
code
“-”
压缩成这样

  • 1-选项
  • 2-选项
但是,在某些情况下,代码的值为空,并按如下方式打印:

  • 选择权
  • 选择权

您可以使用函数
NVL2
构建查询。它有三个参数

NVL2(expr1, expr2, expr3)
如果expr1不为NULL,则返回expr2;如果为NULL,则返回expr3

例如,
NVL2(codigo,'codigo-','')
仅当codigo不为空时才添加“-”

如果事情更复杂,您可以使用
CASE
语句,例如:

SELECT CASE 
         WHEN codigo IS NOT NULL and descrip IS NOT NULL THEN codigo||'-'||descript
         WHEN codigo IS NOT NULL and descrit IS     NULL THEN codigo
         WHEN codigo IS     NULL ANd descrip IS NOT NULL THEN descrip
         ELSE NULL
       END as myresult
 FROM mytable;

你能发布一些样本数据和需要的结果吗?这将澄清您的需求并帮助他人帮助您。您的代码在语法上不正确,因此您的问题很难理解。