转:
http://www.cnblogs.com/cyrix/articles/1750184.html
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 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件判断。 #### 基本语法 ...
### SQL数据库转Access SQL语句改写:Case When Then When Then Else End #### 知识点一:SQL CASE WHEN THEN 结构与Access IIF及SWITCH函数对比 在进行SQL到Access SQL的转换过程中,一个重要的知识点是了解如何...
在Oracle数据库中,`WHERE`子句是SQL查询语句的一部分,用于指定查询条件,而`CASE WHEN`语句则是一种条件表达式,允许我们基于不同的条件返回不同的值。将`CASE WHEN`嵌套在`WHERE`子句中,可以实现更复杂的逻辑...
在SQL Server中,CASE表达式是一种强大的工具,用于在查询中进行条件判断和逻辑操作。它的功能远不止创建新字段那么简单,而是可以在多个方面增强你的SQL查询能力。以下是对CASE关键字在SQL Server中不同用法的详细...
在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...
SQL__case_when_then_的用法
SQL 中 Case 用法 Case 语句是 SQL 中一种强大的语句,用于根据不同的条件执行不同的操作。它可以用来实现复杂的逻辑操作,并且可以与其他 SQL 语句结合使用以实现更加复杂的查询。 SQL 中 Case 语句有两种格式:...
### MySQL中的Case When语句详解 ...此外,`CASE WHEN`还可以与其他SQL语句结合使用,比如聚合函数、子查询等,以满足更复杂的业务需求。希望本文能帮助你更好地理解和使用MySQL中的`CASE WHEN`语句。
CASE WHEN 语句是 SQL 中的一种条件语句,用于实现多个条件的判断和执行。它可以用来代替 IF 语句和 SWITCH 语句,在 Oracle 数据库中尤其常用。 CASE WHEN 语句的基本语法是: ```sql CASE WHEN 条件 THEN 结果 ...
### SQL中的Case语句深入解析 在SQL查询语言中,`Case`语句是一个非常强大的功能,用于在查询中执行条件判断,它可以根据不同的条件返回不同的结果,这使得SQL能够处理更加复杂的数据筛选和转换需求。`Case`语句有...
### SQL中的Case语法使用详解 在SQL查询语言中,`CASE`语句是一个非常重要的功能,它可以用来构建复杂的条件逻辑,实现对数据的灵活处理。本文将深入探讨SQL中的`CASE`语法及其应用场景。 #### 一、基本概念 `...
在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...
select @sql = @sql + ',sum(case 地区 when '''+地区+''' then 数量 end) ['+地区+']' + ',sum(case 地区 when '''+地区+''' then 比率 end) [比率]' from (select distinct 地区 from 表) as a select @sql...
在SQL语言中,`CASE WHEN THEN ELSE END`结构是一种强大的条件判断工具,它允许你在查询中根据特定条件执行不同的逻辑。这个结构可以在`SELECT`、`WHERE`、`HAVING`、`UPDATE`和`INSERT`等语句中使用,以实现复杂的...
本主题将深入探讨“带有搜索的CASE表达式的SELECT语句”,这是一种在SQL查询中实现条件逻辑的强大方法,用于根据特定条件返回不同的值。 CASE表达式允许我们在SELECT语句中进行条件判断,以动态地生成结果列。其...
在SQL查询中,`CASE`语句是一种非常强大的条件判断工具,它允许我们在单个查询中根据不同的条件返回不同的结果。这个"SQL CASE及结构转换问题"的主题涉及到两个主要方面:`CASE`语句的使用以及如何处理SQL中的数据...
在数据库管理和SQL编程中,`DECODE`函数和`CASE WHEN`语句是两种非常重要的逻辑判断工具,它们常用于处理条件分支和数据转换。在这篇文章中,我们将深入探讨这两种方法的用途、区别以及如何巧妙地运用它们。 首先,...
SUM(CASE WHEN shengfu = '胜' THEN 1 ELSE 0 END) AS '胜', SUM(CASE WHEN shengfu = '负' THEN 1 ELSE 0 END) AS '负' FROM #tmp GROUP BY rq; ``` 在这个查询中,CASE语句用于将每个胜利或失败转换为1或0,...
### CASE的用法 (Transact-SQL) #### 概述 `CASE` 是 Transact-SQL 中一个非常重要的关键字,用于根据不同的条件返回不同的结果。它支持两种主要的格式:简单表达式和搜索表达式。这两种格式都能有效地帮助开发者...