Firebird的Case表达式功能

    说来惭愧,自从FB1.5出来以后,一直没有顾上很深入的挖掘它的新功能,只是当它是IB的一个延续来对待——只要能平滑移植,就算OK。

说来惭愧,自从FB1.5出来以后,一直没有顾上很深入的挖掘它的新功能,只是当它是IB的一个延续来对待——只要能平滑移植,就算OK。
    前两天才发现,Firebird 1.5.2里,已经支持了CASE 表达式。在我看来,这是关系型数据库中一个相当重要的功能,因为利用CASE,可以生成强大的数据透视表——这个东西好像在Excel等电子表格里有个专门的名字,忘了是啥了。但它绝对是一种非常有用的功能。当然,我们可以用电子表格软件实现这个功能,但是会带来额外的网络通讯负担,其计算效率也差很多。
以下是利用FB的Demo数据库employee编写的一个透视表示例:

select cust_no
      ,sum(case when order_status = 'shipped' then 1 else 0 end) as Shipped
      ,sum(case when order_status = 'open' then 1 else 0 end) as Open
      ,sum(case when order_status = 'waiting' then 1 else 0 end) as Waiting
from sales
group by cust_no

它生成的结果集以每个客户的订单按处理状态分类统计。

,因为利用CASE,可以生成强大的数据透视表——这个东西好像在Excel等电子表格里有个专门的名字,忘了是啥了。但它绝对是一种非常有用的功能。当然,我们可以用电子表格软件实现这个功能,但是会带来额外的网络通讯负担,其计算效率也差很多。
以下是利用FB的Demo数据库employee编写的一个透视表示例:

select cust_no
      ,sum(case when order_status = 'shipped' then 1 else 0 end) as Shipped
      ,sum(case when order_status = 'open' then 1 else 0 end) as Open
      ,sum(case when order_status = 'waiting' then 1 else 0 end) as Waiting
from sales
group by cust_no

它生成的结果集以每个客户的订单按处理状态分类统计。

时间: 2024-08-31 06:52:48

Firebird的Case表达式功能的相关文章

CASE语句与CASE表达式

      case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆.本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项. 一.简单case语句 -->语法 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSION 2 THEN STATEMENT 2; ... WHEN EXPRESSION N THEN STATEMENT N; ELSE

【SQL 学习】case 表达式

SQL> --使用case 表达式 ---简单CASE表达式 SQL> select product_id,product_type_id ,   2  case product_type_id   3  when 1 then 'book'   4  when 2 then 'video'   5  when 3 then 'dvd'   6  when 4 then 'cd'   7  else 'magazine'   8  end   9  from products; PRODUCT

使用CASE表达式替代SQL Server中的动态SQL

原文:使用CASE表达式替代SQL Server中的动态SQL 翻译自: http://www.mssqltips.com/sqlservertip/1455/using-the-case-expression-instead-of-dynamic-sql-in-sql-server/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012620 问题: 在决定IF/ELS

CASE表达式实现基于条件逻辑来返回一个值_MsSql

我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了. 例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述categoryid列取值的信息. SQL代码如下: -- 设置数据库上下文 USE TSQLFundamentals2008; GO SELECT productid,productname,categoryid, CASE categoryid WHEN 1 THEN 'Beverages' W

Ruby中case表达式详解_ruby专题

Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句. 第二种形式,在case语句的顶部指定一个目标,而每个when从句列出一个或者多个比较条件 和if一样,case返回执行的最后一个表达式的值:而且如果表达式和条件在同一行上的话,可以用then关键字来加以区分.

CASE表达式实现基于条件逻辑来返回一个值

我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了. 例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述categoryid列取值的信息. SQL代码如下: -- 设置数据库上下文 USE TSQLFundamentals2008; GO SELECT productid,productname,categoryid, CASE categoryid WHEN 1 THEN 'Beverages' W

oracle case when的使用方法

Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result1 WHEN expression2 THEN result2 ... WHEN expressionN THEN resultN ELSE default_result  搜索CASE表达式,使用条件确定返回值. 语法: CASE WHEN condition1 THEN result1 WHEN

SQL应用与开发:(六)函数和表达式的使用

在前面几篇博文中已经介绍了许多与表有关的操作.为了演示SQL的不同组件,前面讨论了创建表.基于表的视图.查询表.修改表的数据以及表的关系等.在接下来的博文中将继续介绍SQL中的函数和表达式的使用,重点学习SQL编程人员最常用到的内容.应当注意的是,下面介绍的函数和表达式仅仅是SQL所支持的多种函数和表达式的一部分. 另外,SQL的实现方式以及支持的SQL函数和表达式,除了标准函数外,不同产品还有一些一些非标准的函数.我们可以通过查询相关产品文档来了解其功能和特性. 一.行函数 1. 简介 行函数

使用正规表达式编写更好的 SQL

Oracle Database 10g 中的正规表达式特性是一个用于处理文本数据的强大工具 Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力.这个特性就是正规表达式,是一种用来描述文本模式的表示方法.很久以来它已在许多编程语言和大量 UNIX 实用工具中出现过了. Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的.如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能.已