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 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
|
相关推荐
- **SQL语句语法**:包括SELECT、INSERT、UPDATE、DELETE等常用语句的使用方法。 - **数据类型**:介绍了SQL Server支持的各种数据类型,如数值类型、字符类型、日期时间类型等。 - **变量与常量**:讲解如何定义...
《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...
《Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询》是一部深入探讨SQL Server 2005数据库管理系统中Transact-SQL(T-SQL)查询技术的专业著作。本部分主要聚焦于如何高效、准确地在SQL Server 2005环境中...
在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的逻辑表达式,它可以根据条件返回不同的值。在行转列中,我们可以用多个CASE语句来创建新的列,并根据原始...
根据提供的文件信息,我们可以深入探讨 SQL 服务器中的记录排序功能,特别是 `RANK()` 函数在 SQL Server 中的应用,以及如何在 Oracle 数据库中实现类似的功能。此外,我们还将涉及基于排序的操作,如更新(`UPDATE...
根据提供的文件信息,本文将对如何在SQL Server中实现汉字到拼音的转换这一技术进行详细的解析与探讨。此方法提供了一种直接可用的功能,能够帮助用户轻松地将数据库中的汉字字段转换为对应的拼音形式。 ### SQL ...
《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本专注于SQL Server 2005数据库管理系统中T-SQL(Transact-SQL)查询语言的专著。这本书是技术内幕系列的一部分,旨在为读者提供深入、全面的T-SQL查询知识,...
文章中提到了动态排序方法的具体实现,关键在于结合SQL SERVER中的存储过程以及CASE语句和ORDER BY子句。通过存储过程,可以根据传入的参数动态地构建带有ORDER BY子句的SELECT语句,从而达到动态排序的目的。例如,...
本篇文章将深入探讨如何使用聚合函数Pivot和Unpivot来实现这一目标,特别是针对SQL Server数据库。 首先,让我们了解什么是行转列。行转列就是将表格中的某列值变为新的列名,而原本的行数据则对应到这些新列中。举...
《Inside Microsoft SQL Server 2005: T-SQL Querying》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。该书由Microsoft Press出版,旨在帮助开发者和数据库管理员掌握在SQL Server 2005环境下进行高效、...
在这份《SQL_SERVER命令大全.pdf》中,我们将会详细探讨SQL Server中各个基本和高级SQL命令的用法。 首先,数据操作语言(DML)是SQL Server中最基础的一组命令,用于管理数据库中的数据。DML包括以下几个主要命令...
在SQL Server中,将行转换为列是一种常见的数据操作,主要通过使用PIVOT操作或者CASE语句来实现。这种转换对于数据透视、数据分析以及报表制作等场景非常有用。下面我们将详细探讨这两种方法。 首先,PIVOT是SQL ...
《SQL SERVER 2005技术内幕:T-SQL查询》是数据库开发人员不可或缺的一本指南,它深入探讨了SQL Server 2005中的Transact-SQL(T-SQL)查询技术。这本书以其详尽的解释和实用的示例,帮助读者掌握T-SQL查询的精髓,...
在SQL Server中,实现行转列有多种方法,如PIVOT操作、动态SQL以及使用CASE语句。其中,CASE语句是一种灵活且通用的方法,适用于那些不支持PIVOT或需要动态生成列的场景。CASE语句允许我们在查询中根据条件创建新的...
《SQL Server 2005 技术内幕:T-SQL程序设计》是一本深入探讨SQL Server 2005数据库管理系统中T-SQL(Transact-SQL)编程的权威著作。T-SQL是SQL Server的主要查询语言,用于数据查询、更新、插入和删除,以及复杂的...
- **流程控制**: 讨论`IF...ELSE`, `WHILE`, `CASE`等结构的使用方法,以实现更复杂的逻辑处理。 - **错误处理**: 探讨如何捕获和处理执行过程中的异常情况。 **3. Working with NULLS** - **NULL值处理**: 阐述...
本文将通过一系列实验来探讨在SqlServer中,针对`Bit`字段建立索引的实际效果,并与使用`Tinyint`类型进行对比。 #### 研究方法 本研究主要采用以下步骤: 1. **创建六张表**:分为两组,一组使用`Bit`字段,另一...
在C#中,switch-case结构用于根据变量的值执行不同的代码块,而在SQL Server中,CASE函数类似,但更注重返回值而不是执行代码块。 4. CASE与C#的if-else if语法比较: 在C#中,if-else if语句用于条件判断,而在...
本文将深入探讨如何在SQL Server环境中实现这一功能,并解释所提供代码片段的具体含义与工作原理。 ### 一、理解代码逻辑 首先,我们创建了一个名为`test`的表,其中包含一个主键字段`iid`,类型为`varchar(32)`。...
本案例"Case12_1"将深入探讨C#与SQL Server的连接过程,以及如何进行数据交互,为初学者提供一个清晰的学习路径。 首先,要建立C#与SQL Server的连接,我们需要使用ADO.NET(ActiveX Data Objects .NET)框架。ADO...