CASE WHEN NVL(LABEL4,0) = 0 THEN 24 ELSE 24-LABEL4 END AS LABEL41什么意思
时间: 2024-03-16 13:44:05 浏览: 108
这是一段 SQL 查询语句,它使用了 CASE WHEN 函数和 NVL 函数。
CASE WHEN 函数的语法为:
```
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
它的作用是根据条件返回不同的结果。在这个查询语句中,它的作用是根据 LABEL4 的值返回不同的结果。
NVL 函数的语法为:
```
NVL(value, default_value)
```
它的作用是将 value 转换为非空值,如果 value 为 NULL,则返回 default_value。在这个查询语句中,它的作用是将 LABEL4 的值转换为非空值,如果 LABEL4 为 NULL,则返回 0。
综合以上两个函数,这个查询语句的作用是:如果 LABEL4 的值为 0 或 NULL,则将 LABEL41 的值赋为 24;否则将 LABEL41 的值赋为 24 减去 LABEL4 的值。也就是说,如果 LABEL4 的值为 0 或 NULL,则 LABEL41 的值为 24,否则 LABEL41 的值为 24 减去 LABEL4 的值。
相关问题
select year,sum(nvl(case when jclx='1' then jccs end,0)) as rcjcjccs,sum(nvl(case when jclx='1' then jccs end,0))-sum(nvl(case when jclx='1' then hgs end,0)) as rcjcbhgs ,sum(nvl(case when jclx='2' then jccs end,0)) as zxjcjccs,sum(nvl(case when jclx='2' then jccs end,0))-sum(nvl(case when jclx='2' then hgs end,0)) as zxjcbhgs ,sum(nvl(case when jclx='3' then jccs end,0)) as fxjcjccs,sum(nvl(case when jclx='3' then jccs end,0))-sum(nvl(case when jclx='3' then hgs end,0)) as fxjcbhgs ,sum(nvl(case when jclx='4' then jccs end,0)) as xkjcjccs,sum(nvl(case when jclx='4' then jccs end,0))-sum(nvl(case when jclx='4' then hgs end,0)) as xkjcbhgs ,sum(nvl(case when jclx='5' then jccs end,0)) as zgfccs,sum(nvl(case when jclx='5' then jccs end,0))-sum(nvl(case when jclx='5' then hgs end,0)) as zgfcbhgs ,sum(nvl(case when jclx='7' then jccs end,0)) as txjcjccs,sum(nvl(case when jclx='7' then jccs end,0))-sum(nvl(case when jclx='7' then hgs end,0)) as txjcbhgs ,sum(nvl(case when jclx='9' then jccs end,0)) as sjjcjccs,sum(nvl(case when jclx='9' then jccs end,0))-sum(nvl(case when jclx='9' then hgs end,0)) as sjjcbhgs ,sum(nvl(case when jclx='10' then jccs end,0)) as yyjcjccs,sum(nvl(case when jclx='10' then jccs end,0))-sum(nvl(case when jclx='10' then hgs end,0)) as yyjcbhgs ,sum(nvl(case when jclx='11' then jccs end,0)) as zchcjccs,sum(nvl(case when jclx='11' then jccs end,0))-sum(nvl(case when jclx='11' then hgs end,0)) as zchcbhgs ,sum(nvl(case when jclx='12' then jccs end,0)) as bahcjccs,sum(nvl(case when jclx='12' then jccs end,0))-sum(nvl(case when jclx='12' then hgs end,0)) as bahcbhgs from ( select case when jcbz='1' then '5' else jclx end as jclx, year,jccs,hgs from ( select rec.jclx,rec.jcbz, rec.year, COUNT( rec.ID ) AS jccs, SUM( CASE aa10.AAA103 WHEN '不符合' THEN '0' ELSE '1' END) as hgs from t_inspect_record rec join AMR_ENTERPRISE.t_pub_enterprise ent on rec.ztlsh = ent.id JOIN aa10a1 aa10 ON ( rec.JCJG = aa10.AAA102 AND aa10.AAA100 = 'JCJG' ) WHERE rec.ZT = 1 AND rec.STATUS = 1 and (rec.sszy='10' or rec.sszy='11') group by rec.jclx,rec.jcbz,rec.year order by rec.jclx,rec.jcbz,rec.year) ) where 1=1 and year=':year' group by year order by year 以上是一个sql,我想通过正则表达式,以from、join为关键字,分析出查询sql中涉及的表名
可以使用正则表达式来解析出SQL查询语句中涉及到的表名。以下是一个示例正则表达式:
```
/(from|join)\s+(\w+)/i
```
该正则表达式可以匹配以`from`和`join`关键字开始后面跟着一个或多个单词的字符串。其中,`\s+`匹配空格或制表符,`\w+`匹配一个或多个字母、数字或下划线。
使用该正则表达式,可以在PHP中使用`preg_match_all`函数来解析出SQL查询语句中涉及到的表名,如下所示:
```php
$sql = "SELECT year, sum(...) FROM t_inspect_record rec JOIN AMR_ENTERPRISE.t_pub_enterprise ent ON rec.ztlsh = ent.id WHERE 1=1 AND year=':year' GROUP BY year ORDER BY year";
preg_match_all('/(from|join)\s+(\w+)/i', $sql, $matches);
$tables = array_unique($matches[2]);
print_r($tables);
```
该代码会输出SQL查询语句中涉及到的所有表名,如`"t_inspect_record"`,`"AMR_ENTERPRISE.t_pub_enterprise"`等。其中,`array_unique`函数用于去重。
select nvl(sum(case when BB01.ABB008 = '02' then '1' else '0' end), 0) dbaj, nvl(sum(case when BB01.ABB029 = '0' AND BB01.ABB008 != '0' then '1' else '0' end), 0) blzaj, nvl(sum(case when BB01.ABB029 = '9' then '1' else '0' end), 0) ybaj, nvl(sum(case when 1 = 1 then '1' else '0' end), 0) ajtol from LABOR_LDJC.BB01 where BB01.AAE100 = '1';
这是一个 SQL 查询语句,查询 LABOR_LDJC.BB01 表中符合条件的数据,并对这些数据进行聚合统计。该查询语句的作用是统计满足特定条件的记录数量,并将结果按照指定的别名进行命名,别名分别为 dbaj、blzaj、ybaj 和 ajtol。
具体而言,该查询语句的含义如下:
- 查询 LABOR_LDJC.BB01 表中符合条件 BB01.AAE100 = '1' 的记录。
- 对满足条件的记录进行聚合统计,统计结果按照别名进行命名。
- 别名 dbaj 表示满足条件 BB01.ABB008 = '02' 的记录数量。
- 别名 blzaj 表示满足条件 BB01.ABB029 = '0' AND BB01.ABB008 != '0' 的记录数量。
- 别名 ybaj 表示满足条件 BB01.ABB029 = '9' 的记录数量。
- 别名 ajtol 表示查询结果的总记录数量。
其中,关键词 nvl 的作用是判断聚合结果是否为空,如果为空,则将其转换为 0。CASE WHEN 语句按照条件进行判断,并返回特定的结果。当条件成立时,返回 '1',否则返回 '0'。
阅读全文