Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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语句可以包含if-then-else和or子句吗_Sql - Fatal编程技术网

Sql case语句可以包含if-then-else和or子句吗

Sql case语句可以包含if-then-else和or子句吗,sql,Sql,大家好,我是SQL的新手,希望在SQL中执行以下操作。我已经在Crystal中完成了,但不知道是否可以在SQl中完成。下面是我如何在Crystal中完成的,这可以在SQL中完成: {@Adjust-code}和{@Adjust-code-WH}是两个变量,如果为空,则检查其是否为空值。将工作“空白”放在字段中 能否将以下代码放入select语句中: if {RV_CLAIM_DETAILS.NET} <> 0 then {RV_CLAIM_DETAILS.NET}

大家好,我是SQL的新手,希望在SQL中执行以下操作。我已经在Crystal中完成了,但不知道是否可以在SQl中完成。下面是我如何在Crystal中完成的,这可以在SQL中完成:

{@Adjust-code}
{@Adjust-code-WH}
是两个变量,如果为空,则检查其是否为空值。将工作“空白”放在字段中

能否将以下代码放入select语句中:

if {RV_CLAIM_DETAILS.NET} <> 0
    then {RV_CLAIM_DETAILS.NET}

    else if ({@Adjust Code} in ["#C", "A2", "24"] or
            {@Adjust Code} = "23" and {@Adjust Code WH} = "24")
             then {RV_CLAIM_DETAILS.CONTRVAL}
如果{RV_CLAIM_DETAILS.NET}0
然后{RV_CLAIM_DETAILS.NET}
如果[“#C”、“A2”、“24”]中的({@Adjust Code})或
{@Adjust Code}=“23”和{@Adjust Code WH}=“24”)
然后{RV_CLAIM_DETAILS.contval}
问候,,
DAvid

简单的大小写表达式:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
例如:

SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

简单的大小写表达式:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
例如:

SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

简单的大小写表达式:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
例如:

SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

简单的大小写表达式:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END
例如:

SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

表示此逻辑的标准SQL方法是使用
case
语句:

(case when RV_CLAIM_DETAILS.NET <> 0
      then RV_CLAIM_DETAILS.NET
      when "@Adjust Code" in ('#C', 'A2', '24') or
           "@Adjust Code" = '23' and "@Adjust Code WH" = '24'
      then RV_CLAIM_DETAILS.CONTRVAL
 end) as myValue
(当RV_索赔_DETAILS.NET 0
然后是RV_CLAIM_DETAILS.NET
当('#C',A2',24')中的“@调整代码”或
“@Adjust Code”=“23”和“@Adjust Code WH”=“24”
然后是索赔详情
结束)作为myValue
这与您的语句具有完全相同的语义。如果第一个子句匹配,则返回该值。如果不匹配,则返回
NULL

一些注释。首先,SQL使用单引号而不是双引号来分隔字符串。也就是说,一些数据库引擎为此支持双引号


第二,通常不允许以
“@”
开头的列名,除非它们被转义。转义名称的一种方法是使用双引号。也就是说,一些数据库引擎出于同样的目的使用了方括号或反引号。我还删除了SQL不需要的大括号。

表示此逻辑的标准SQL方法是使用
case
语句:

(case when RV_CLAIM_DETAILS.NET <> 0
      then RV_CLAIM_DETAILS.NET
      when "@Adjust Code" in ('#C', 'A2', '24') or
           "@Adjust Code" = '23' and "@Adjust Code WH" = '24'
      then RV_CLAIM_DETAILS.CONTRVAL
 end) as myValue
(当RV_索赔_DETAILS.NET 0
然后是RV_CLAIM_DETAILS.NET
当('#C',A2',24')中的“@调整代码”或
“@Adjust Code”=“23”和“@Adjust Code WH”=“24”
然后是索赔详情
结束)作为myValue
这与您的语句具有完全相同的语义。如果第一个子句匹配,则返回该值。如果不匹配,则返回
NULL

一些注释。首先,SQL使用单引号而不是双引号来分隔字符串。也就是说,一些数据库引擎为此支持双引号


第二,通常不允许以
“@”
开头的列名,除非它们被转义。转义名称的一种方法是使用双引号。也就是说,一些数据库引擎出于同样的目的使用了方括号或反引号。我还删除了SQL不需要的大括号。

表示此逻辑的标准SQL方法是使用
case
语句:

(case when RV_CLAIM_DETAILS.NET <> 0
      then RV_CLAIM_DETAILS.NET
      when "@Adjust Code" in ('#C', 'A2', '24') or
           "@Adjust Code" = '23' and "@Adjust Code WH" = '24'
      then RV_CLAIM_DETAILS.CONTRVAL
 end) as myValue
(当RV_索赔_DETAILS.NET 0
然后是RV_CLAIM_DETAILS.NET
当('#C',A2',24')中的“@调整代码”或
“@Adjust Code”=“23”和“@Adjust Code WH”=“24”
然后是索赔详情
结束)作为myValue
这与您的语句具有完全相同的语义。如果第一个子句匹配,则返回该值。如果不匹配,则返回
NULL

一些注释。首先,SQL使用单引号而不是双引号来分隔字符串。也就是说,一些数据库引擎为此支持双引号


第二,通常不允许以
“@”
开头的列名,除非它们被转义。转义名称的一种方法是使用双引号。也就是说,一些数据库引擎出于同样的目的使用了方括号或反引号。我还删除了SQL不需要的大括号。

表示此逻辑的标准SQL方法是使用
case
语句:

(case when RV_CLAIM_DETAILS.NET <> 0
      then RV_CLAIM_DETAILS.NET
      when "@Adjust Code" in ('#C', 'A2', '24') or
           "@Adjust Code" = '23' and "@Adjust Code WH" = '24'
      then RV_CLAIM_DETAILS.CONTRVAL
 end) as myValue
(当RV_索赔_DETAILS.NET 0
然后是RV_CLAIM_DETAILS.NET
当('#C',A2',24')中的“@调整代码”或
“@Adjust Code”=“23”和“@Adjust Code WH”=“24”
然后是索赔详情
结束)作为myValue
这与您的语句具有完全相同的语义。如果第一个子句匹配,则返回该值。如果不匹配,则返回
NULL

一些注释。首先,SQL使用单引号而不是双引号来分隔字符串。也就是说,一些数据库引擎为此支持双引号


第二,通常不允许以
“@”
开头的列名,除非它们被转义。转义名称的一种方法是使用双引号。也就是说,一些数据库引擎出于同样的目的使用了方括号或反引号。我还删除了SQL不需要的大括号。

在哪个选项中?哪种实施方式?您是否尝试了某项操作但失败/卡住了?case语句执行if/else逻辑。既然你知道的足够多,可以把它包括在主题行中,为什么不简单地尝试一下呢?SQL只是一种结构化查询语言——一种被许多数据库系统使用的语言,但不是一种数据库产品。。。很多东西都是特定于供应商的-所以我们确实需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…在哪个选择状态中?哪种实施方式?您是否尝试了某项操作但失败/卡住了?case语句执行if/else逻辑。既然你知道的足够多,可以把它包括在主题行中,为什么不简单地尝试一下呢?SQL只是一种结构化查询语言——一种被许多数据库系统使用的语言,但不是一种数据库产品。。。很多东西都是特定于供应商的-所以我们确实需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…在哪个选择状态中?哪种实施方式?您是否尝试了某项操作但失败/卡住了?如果/