您的当前位置:首页正文

数据库之Case When

2023-11-09 来源:画鸵萌宠网

      先说一下需求,组长让我画一个图,要求是把最近几年的**信息统计一下,例如2012年这个**交接了多少次,2013年多少次,总共多少次。想想也不难是吧,于是组长问我怎么样,我就轻松的接下来了。但是以前一直接触的是简单的SQL语句和一些EntityFramework等工具,对于SQL语句就真的把我难住了,写了一天的SQL语句,也是没有达到想要的效果,后来上网看了一下,原来SQL里边有一个Case When语句。

       用途

       当我们在写SQL语句的时候,如果遇到这么一种情况,就是假如。。,则。。,否则。。,例如,加入是城市是北京,就返回时中国城市,如果是东京,就返回日本城池,否则返回西欧城市。这个请款下我们就可以用到这个,例如下边的小例子。

select case when t.name = '北京' then '中国' case when t.name = '东京' then '日本' else '西欧' endfrom test1 t
      当然这还是一个简答的应用,例如我这次项目中用的CaseWhen的用法,就用到了条件筛选和SQL语句,例如我要查询2014年叫lisi的人有多少,2015年lisi的人有多少。那么下边的语句就能帮我简单的实现

select to_char(t.birthday ,'yyyy'), sum(case when to_char(t.birthday ,'yyyy')= '2014' and t.name = 'lisi' then 1 when to_char(t.birthday ,'yyyy')= '2015' and t.name = 'lisi' then 1 else 0 end) as firYearfrom test1 t group by to_char(t.birthday ,'yyyy');
      大家自己观察发现我在上边用到了Group by来进行分组,因为如果没有这个的话,查询出来的结果如下图  

       技术分享

      但是如果使用了group by分组的话,效果如下

      技术分享

      实现的效果不一样,所以大家需要什么样子的表格,就怎么查询就可以。

      其实上边说了这么多,好像就是一个if...else...,但是这个是所有数据库都可以实现的,但是在Oracle,还有一个类似于咱们的三目运算的一个小语法。

select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')from employees;
      当然如果咱们的逻辑简单可以用这个,不过逻辑稍微复杂一些的建议不要用,感觉没有CaseWhen的逻辑清晰,而且代码的移植性也不太好。毕竟只有Oracle能用。

      总结一下,如果我们需要在数据库中进行逻辑判断,不防用一下咱们的CaseWhen,或者Oracle的decode。加上group by 效果更佳。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据库之Case When

标签:数据库

小编还为您整理了以下内容,可能对您也有帮助:

数据库case when语句 case语句 数据库

sql语句中case when的使用问题

举个例子就明白了,例如在员工的工资表把员工的工资分成等级

1000以下为低薪,1000-2000为中等,其他为高薪

select (case when salary <= 1000 then '低薪' when salary > 1000 and salary < 2000 then '中等' else '薪' end ) as 工资等级 from employee

这样,工等就可当做一个列来处理,包括where面,可以写where (case when salary <= 1000 then '低薪' when salary > 1000 and salary < 2000 then '中等' else '高薪' end ) = ‘低薪'

当做一个列就好

sql中case when …… then …… 用法是什么?

select 分数,类别=Case

WHEN 分数>=85 THEN '优秀'

WHEN 分数>=75 THEN '良好'

WHEN 分数>=60 THEN '及格'

ELSE '不及格'

END

from 成绩表

sql 的case when 语句

把括掉就好了。

下面是case的两种用法,可以看下 :

1. 使用带有 CASE 简单表达式的 SELECT 语句。

在 SELECT 句,CASE 简单表达式只能用于等同性检查,而不进行其他比较。下面的示例使用 CASE 表达式更改产品系列类别的显示,以使这些类别更易理解。

USE AdventureWorks2008R2;

GO

SELECT   ProctNumber, Category =

CASE ProctLine

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 Proction.Proct

ORDER BY ProctNumber;

GO

2. 使用带有 CASE 搜索表达式 SELECT 语句

在 SELECT 语句中,CASE 搜索表达式允许根据比较值替换结果集中的值。下面的示例根据产品的价格范围标价显示

mySQL更新语句的case when 和 where的结合

直接加在语句最后就行了。

UPDATE `member` SET score = (CASE WHEN score IS NOT NULL THEN score = 0 ELSE score = 1 END) where id =1;

mysql数据库中CASE WHEN语句。

case when语句,用于计算条件列并回多可能结果表达式之一。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。

两种格

标签:作文经典 上一篇:同啥可啥成语 同啥同啥成语 下一篇:一个浪花打一成语 浪花打一成语

SQL语句中case,when,then的用法

case 表达式

when 值1 then

如何用ORM支持SQL语句的CASE WHEN

如何得到库中所有表字段及字段中文描述

以下资料,通过csdn的一位师兄从SQL版主那得到:

sql中

SELECT

(case when a.colorder=1 then d.name else '' end) N'表名',

a.colorder N'字段序号',

a.name N'字段名',

(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',

(case when (SELECT count(*)

FROM sysobjects

WHERE (name in

(SELECT name

FROM sysindexes

WHERE (id = a.id) AND (indid in

(SELECT indid

FROM sysindexkeys

WHERE (id = a.id) AND (colid in

(SELECT colid

FROM syscolumns

WHERE (id = a.id) AND (name = a.name))))))) AND

(xtype = 'PK'))>0 then '√' else '' end) N'主键',

b.name N'类型',

a.length N'占用字节数',

COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',

isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',

(case when a.isnullable=1 then '√'else '' end) N'允空',

isnull(e.text,'') N'默认值',

isnull(g.[value],'') AS N'字段说明'

--into ##tx

FROM syscolumns a left join systypes b

on a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'

left join sy *** ents e

on a.cdefault=e.id

left join sysproperties g

on a.id=g.id AND a.colid = g. *** allid

order by object_name(a.id),a.colorder

一个字,爽,还可以省去做DD时的好多麻烦.

如果不是很明白,可以将以上代码放到SQL查分析

数据库sql中的case语句~

*

SQL语句中的CASE语句与高级语言中的switch语句,是标准SQL的语法,适用与一个条判断多种值的情况下分别执行不同的操作

*

灵活应用CASE语句可以SQL语句变得简洁易读.

*

Case 使用方法:

*

Case具有两种格。简单Case函数

*

和Case搜索函数。 --简单Case

*

函数

CASE sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他' END

--Case搜索函数

CASE WHEN sex = '1' THEN '男'

WHEN sex = '2' THEN '女'

ELSE '其他' END

这两种方式,可以现相同的功能。简Case函数的写法相对比较简洁,但是和Case搜索数相比,功能方面会些,比如写判断式。

还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

--比如说,面这段SQL,你永远无法得到“第二类”个

关于使用sql语句sum(case when……)来实现分类汇总功能

你是要按月分和销售人员来对销售额透视,而sql语句只对月份分组,正确结果应该增加分组维度

select

月份,

sum (case when 销售人员='姓名1' then 销售数量*产品单价 else 0 end) as 姓名1销售额,

sum (case when 销售人员='姓名2' then 销售数量*产单价 else 0 end) as 姓名1销售额,

sum (case when 销售人员='姓名3' then 销售数量*产品单价 else 0 end) as 姓名1销售额

from 表格

group by 月份,销售人

sql语句中,decode和case when语句的区别有哪些?并且哪个更实用?

DECODE Oracle 特有

CASE WHEN Oracle , SQL Server, MySQL 都可用。

科目表: sid name;

个信息表: tid name sex age;

成绩表: id score sid tid;

CASE WHEN 可以 等于的条件, 也可以 大于等于 之类的条件。

而 decode 好像只能 等于的件。

下面是一个 CASE WHEN 的例子:

SELECT

tid as 号,

COUNT(sid) AS 选择几种科目,

SUM( CASE WHEN score >=60 THEN 1 ELSE 0 END )

/ COUNT(score) AS 及格

SQL 语句中 case when 怎么判断 某字段数据为空

Declare @Data VarChar(20)

Set @Data = ''

Select Case When @Data Is NULL Then NULL

When @Data = '' Then 'Data is empty'

End

或者:

CASE WHEN (ID IS NULL)

THEN 'YES'

ELSE 'NO'

END AS ID_Value,

标签:作文经典 上一篇:同啥可啥成语 同啥同啥成语 下一篇:一个浪花打一成语 浪花打一成语

case when用法sql

在SQL中,“Case When”语句用法如下:

在SQL中,“Case When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作;语法“CASE 字段 WHEN 条件1 THEN 操作1 WHEN 条件2 THEN 操作2...ELSE 操作n END;”。

SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。

SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。

SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。

此外,SQL 也有一些变种,就像中文有很多方言,比如:

微软的 SQL Server 使用 T-SQL;

Oracle 使用 PL/SQL;

微软 Access 版本的 SQL 被称为 JET SQL(本地格式)。

oracle case when的用法

关于oracle case when的用法如下:

ORACLE CASE WHEN其实就相当于我们程序当中的IF语句,他的语法结构是:CASE WHEN "条件表达式" THEN"语句1"ELSE,"语句2"END。

CASE WHEN "条件表达式" THEN,"语句1",ELSE,"语句2",END。意思相信大家都明白,当条件满足时持行语句1,否则持行语句2其实他的用处很多,如对SELECT中字段进行处理:有时候我们在处理数据库的数据时。

往往只是从数据库中拿出数据然后再对数据进行简单的操作,比如改变字段的显现方式(将0/1形式改成y/n的形式),一般我们的处理方法是将从数据库得到的数据依次读出后依次处理,这样就不断会增长代码还会增加运行时间。

那么我们有没有更简单的方法了,答案是肯定的,接下来我教大家Oracle中Case

When的用法:例:我要将某个字段中y/n形式改成0/1的形式,SQL语句如下:SELECT ORGID, ORGNAME, CASE WHEN ISLEAF=’y’ THEN 1 ELSE 0 END ISLEAF。

FROM OM_ORGANIZATION这样我们就将字段ISLEAF中的y/n形式变成了0/1形式,是不是很有用。其实我也还可以有很多其他用处,如果分段算工资(GZ):CASE WHEN GZ<2000 THEN 2000,WHEN GZ<3000 THEN 3000 ELSE 4000 END GZ。

Top