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

SQL Server中Case 的不同用法

阅读更多
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
  CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。

  首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END
  在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:

USE pubs
GO
SELECT
    Title,
    'Price Range' =
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
FROM titles
ORDER BY price
GO
  这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
GO
  你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:

USE pubs
GO
SELECT
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END AS Range,
    Title
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
ORDER BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
GO
  注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

  除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
分享到:
评论

相关推荐

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    - **SQL语句语法**:包括SELECT、INSERT、UPDATE、DELETE等常用语句的使用方法。 - **数据类型**:介绍了SQL Server支持的各种数据类型,如数值类型、字符类型、日期时间类型等。 - **变量与常量**:讲解如何定义...

    SqlServer数据库中文乱码问题解决方法

    在SQL Server中,`NVARCHAR`类型用于存储Unicode数据,使用UCS-2字符集,这是一种2字节编码格式,能够支持更广泛的字符集,包括UTF-16。UCS-2是Unicode早期的标准,后来被UTF-16取代,UTF-16提供了更大的扩展性和...

    pb中如何判断sqlserver数据库服务的状态控制启动关闭

    ### pb中如何判断SQLServer数据库服务的状态控制启动关闭 在PowerBuilder(简称PB)开发环境中,经常需要对SQL Server数据库的服务进行状态查询、启动或关闭等操作。本文将详细介绍如何利用PB来实现这些功能。 ###...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    通过这本书,读者不仅可以全面掌握T-SQL的语法和用法,还能了解到最佳实践和实战技巧,从而在SQL Server 2008环境中编写高效、可靠的数据库代码。对于数据库管理员和开发人员来说,这是一本不可多得的参考书。

    启动SQL Server服务.txt

    - **SQL Server服务**:SQL Server是由微软开发的一款关系型数据库管理系统,它提供了多种服务来支持不同的功能需求,例如SQL Server Database Engine(主要负责数据存储和查询)、SQL Server Agent(用于计划作业)...

    sqlserver中Case的使用方法(上下篇)第1/2页

    Case具有两种格式。简单Case函数和Case搜索函数。

    SQLServer汉字转全拼音函数 .txt

    ### SQLServer中的汉字转全拼音函数 在数据库管理和数据处理领域,经常需要对文本进行各种形式的转换,以便于检索、排序或者分析等操作。其中一个常见的需求是将汉字转换为拼音,这对于支持中文环境的系统尤其重要...

    SQL Server存储过程基本语法

    以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    本书首先会介绍T-SQL的基础概念,包括SELECT语句的基本用法,如何从一个或多个表中检索数据,以及如何使用WHERE子句过滤结果。接下来,会深入探讨更高级的查询技巧,如联接(JOIN)操作,用于合并来自不同表的数据;...

    SQL根据表中某列队值选择关联不同的表

    `CASE`语句可以在SQL查询中起到条件判断的作用,可以用来根据某个字段的值返回不同的结果或执行不同的逻辑。本例中我们将使用`CASE`语句结合多表关联来实现需求。 **表结构和数据**: - **表1 (T)** 字段:`id`,...

    MICROSOFT SQL SERVER 2008技术内幕:T-SQL语言基础.pdf

    由于提供的文件信息中仅包含标题、描述、标签和部分内容的指示,但未实际给出电子书的具体内容...接下来,将进入具体的示例和操作部分,通过实例演示上述知识点的使用方法和技巧,帮助读者更好地理解和应用T-SQL语言。

    三个SQL视图查出所有SQL Server数据库字典

    SQL Server 2005版本中查询数据库字典的方法与SQL Server 2000相似,但有一些重要的变化需要注意: 1. **系统表和视图的变化**:随着版本的更新,SQL Server 2005引入了新的系统表和视图,以提供更强大的功能和支持...

    SQL Server行转列使用

    在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的逻辑表达式,它可以根据条件返回不同的值。在行转列中,我们可以用多个CASE语句来创建新的列,并根据原始...

    sqlserver约束详解

    在 SQL Server 数据库系统中,数据完整性是非常重要的一个方面,它确保了数据库中的数据准确无误且一致。为了维护这种完整性,SQL Server 提供了多种类型的约束机制,包括主键(Primary Key)、唯一键(Unique Key)...

    经典SQLServer操作脚本

    同时,可以结合使用CASE语句进行复杂的条件排序。 4. **行列转换**: 数据的行列转换在数据分析中十分常见。SQL Server提供了PIVOT和UNPIVOT操作来实现这一目的。PIVOT用于将行数据转换为列,而UNPIVOT则是相反的...

    SQLsevrer CASE用法

    ### SQL Server 中 CASE 表达式的深入解析与应用实例 #### 概述 在 SQL Server 数据库管理系统中,`CASE` 表达式是一种非常强大的工具,用于在查询语句中进行条件判断和数据处理。它允许用户根据指定的条件返回...

    sql server 中行转列

    在 SQL Server 中实现行转列的方法多种多样,包括使用静态 SQL 结合 `CASE` 和 `SUM` 函数的方式,以及使用动态 SQL 构建复杂查询的方式。这两种方法各有优势: - **静态 SQL**:适合于列名固定的情况,编写简单...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    sqlserver汉字转拼音(绝对的经典直接创建可用)

    根据提供的文件信息,本文将对如何在SQL Server中实现汉字到拼音的转换这一技术进行详细的解析与探讨。此方法提供了一种直接可用的功能,能够帮助用户轻松地将数据库中的汉字字段转换为对应的拼音形式。 ### SQL ...

Global site tag (gtag.js) - Google Analytics