`
liyuandong
  • 浏览: 332614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL中Case的妙用(一)

SQL 
阅读更多

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,你永远无法得到“第二类”这个结果

 

 

CASE WHEN col_1 IN ( 'a''b'THEN '第一类'

 

         WHEN col_1 IN ('a')   THEN '第二类'

 

 

ELSE'其他' END


下面我们来看一下,使用Case函数都能做些什么事情。 

一,已知数据按照另外一种方式进行分组,分析。 

有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 

国家(country)

人口(population)

中国

600

美国

100

加拿大

100

英国

200

法国

300

日本

250

德国

200

墨西哥

50

印度

250


根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 

人口

亚洲

1100

北美洲

250

其他

700


想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 
如果使用Case函数,SQL代码如下: 

SELECT  SUM(population),

        CASE country

                WHEN '中国'     THEN '亚洲'

                WHEN '印度'     THEN '亚洲'

                WHEN '日本'     THEN '亚洲'

                WHEN '美国'     THEN '北美洲'

                WHEN '加拿大'  THEN '北美洲'

                WHEN '墨西哥'  THEN '北美洲'

        ELSE '其他' END

FROM    Table_A

GROUP BY CASE country

                WHEN '中国'     THEN '亚洲'

                WHEN '印度'     THEN '亚洲'

                WHEN '日本'     THEN '亚洲'

                WHEN '美国'     THEN '北美洲'

                WHEN '加拿大'  THEN '北美洲'

                WHEN '墨西哥'  THEN '北美洲'

        ELSE '其他' END;


同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下; 

SELECT

        CASE WHEN salary <= 500 THEN '1'

             WHEN salary > 500 AND salary <= 600  THEN '2'

             WHEN salary > 600 AND salary <= 800  THEN '3'

             WHEN salary > 800 AND salary <= 1000 THEN '4'

        ELSE NULL END salary_class,

        COUNT(*)

FROM    Table_A

GROUP BY

        CASE WHEN salary <= 500 THEN '1'

             WHEN salary > 500 AND salary <= 600  THEN '2'

             WHEN salary > 600 AND salary <= 800  THEN '3'

             WHEN salary > 800 AND salary <= 1000 THEN '4'

        ELSE NULL END;


分享到:
评论

相关推荐

    SQL中Case语句用法讨论_BJ

    在SQL查询语言中,`Case`语句是一个非常强大的功能,用于在查询中执行条件判断,它可以根据不同的条件返回不同的结果,这使得SQL能够处理更加复杂的数据筛选和转换需求。`Case`语句有两种基本形式:简单`Case`表达式...

    SQL中case的使用

    SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。

    SQL Server中Case 的不同用法

    当你想基于CASE表达式的返回值进行排序时,可以在ORDER BY子句中使用CASE。这使得你可以根据逻辑条件而非原始数据字段进行排序。在以下示例中,首先按价格范围排序,然后按书名排序。 ```sql SELECT CASE WHEN...

    sql数据库 转 Access SQL语句改写之 Case When Then When Then Else End

    在进行SQL到Access SQL的转换过程中,一个重要的知识点是了解如何将SQL中的`CASE WHEN THEN`结构转换为Access中的等效表达式。在SQL中,`CASE WHEN THEN`是一种常用的条件表达式,用于根据不同的条件返回不同的值。...

    CASE的用法 (Transact-SQL)

    CASE 表达式可以应用于 SQL Server 和 Windows Azure SQL Database 中的多种上下文,包括但不限于: - **SELECT 语句**: 在 SELECT 语句中使用 CASE 表达式可以根据不同的条件动态生成列值。 - **UPDATE 语句**: 在...

    SQLsevrer CASE用法

    在 SQL Server 数据库管理系统中,`CASE` 表达式是一种非常强大的工具,用于在查询语句中进行条件判断和数据处理。它允许用户根据指定的条件返回不同的结果,这在数据汇总、分类统计以及数据清洗等场景中极为有用。`...

    case when和sum case when 写法及拼接字段

    在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件判断。 #### 基本语法 ...

    sql语法的各种妙用

    ### SQL语法的各种妙用 #### 一、动态执行SQL语句 在SQL中,我们可以使用动态执行SQL语句的方式来进行一些灵活的操作。这种方式通常适用于那些需要在运行时确定查询细节的情况。 **示例代码:** ```sql DECLARE ...

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

    SQL__case_when_then_的用法

    SQL__case_when_then_的用法

    sql语句妙用指导 sql的使用

    ### SQL语句妙用指导——SQL的便捷及巧妙用法详解 #### 一、动态SQL语句基础 在SQL编程中,动态SQL是指在运行时根据条件构建的SQL语句。这种方式非常灵活,尤其适用于需要根据不同的输入动态生成查询的情况。 **1...

    SQL case_when用法

    本文档介绍了SQL中case...when的用法。

    sql case when exists not exists in not in

    `CASE WHEN` 是SQL中的一个条件表达式,允许我们根据不同的条件返回不同的结果值。基本语法结构如下: ```sql CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ... ELSE 默认结果 END ``` 例如,如果我们想...

    SQL CASE及结构转换问题

    在SQL查询中,`CASE`语句是一种非常强大的条件判断工具,它允许我们在单个查询中根据不同的条件返回不同的结果。这个"SQL CASE及结构转换问题"的主题涉及到两个主要方面:`CASE`语句的使用以及如何处理SQL中的数据...

    论SQL Server数据库中Case函数的作用.pdf

    在UPDATE语句中使用Case函数可以用来动态更新表中的数据: ```sql UPDATE Products SET Price = CASE WHEN Category = '电子' THEN Price * 0.9 WHEN Category = '书籍' THEN Price * 0.8 ELSE Price END WHERE ...

    sql语句妙用. sql语句妙用.doc

    在文档"sql语句妙用.doc"中,主要讲述了SQL语句的一些高级用法,特别是动态SQL和与Identity列相关的操作。 首先,动态SQL是SQL中一个非常重要的特性,允许在运行时构建和执行SQL命令。在例子中,`EXEC`和`sp_...

    Delphi中sql语句的使用总结

    在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在Delphi中,通过`TADOQuery`组件来...

    sql语句妙用,各种sql语句的详细用法与讲解

    本篇文章将深入探讨SQL语句的一些妙用和详细用法,包括动态SQL、输出参数、Identity列的管理以及通用的SQL查询技巧。 1. 动态SQL: 动态SQL允许我们在运行时构建和执行SQL语句,这在处理动态生成的查询或变量作为...

Global site tag (gtag.js) - Google Analytics