练习 1.3:指定结果列

在开始之前,必须完成练习 1.2:使用表创建 SELECT 语句

在本练习中,将指定哪些列要显示在查询结果中。音像店职员需要了解客户的姓名、客户租借的每个录像带的名称以及每个录像带将在星期几到期。将包括两列并为第三个结果列添加 CASE 表达式,然后为该 CASE 列表达式指定别名。

为结果列集选择列

将以下列添加至结果列集,作为客户姓名和录像带名称:

  1. 在“表”窗格中,选择 C (CUSTOMER) 表中的 NAME 复选框。
  2. 在“设计”窗格的“列”页面上,双击列中的第一个空单元格,单击列表中的 V.TITLE,然后按 Enter 键。
    这样就将这些列添加到“SQL 源代码”窗格的 SQL 源代码中了。

将 CASE 表达式添加至结果列集

查询结果集的第三列将是列表达式的结果。音像店数据库以日期格式存储录像带到期的日期。需要将日期格式转换为包含录像带到期日期的名称的字符串。数据库函数将根据与星期几相对应的日期获取一个整数。使用 CASE 表达式对该函数进行求值,并将该函数返回的整数转换为表示星期几的字符串(例如,1 在查询结果中将更改为“Sunday”)。执行下列活动以构建 CASE 表达式:


  1. 在“设计”窗格的“列”页面上,双击列中的第三个单元格(第一个空单元格),单击列表末尾处的构建表达式,然后按 Enter 键。
    “表达式构建器”向导打开。
  2. 创建一个简单类型的 CASE 表达式。
    1. 在“表达式构建器”页上,单击 CASE - 搜索简单类型,然后单击下一步
    2. 在“CASE 选项”页上,单击简单 When 子句,然后单击下一步
  3. 添加 DAYOFWEEK 函数:
    1. 在“简单类型 Case”页上,在 CASE 列表中,单击构建函数表达式。“函数表达式构建器”向导打开。
    2. 选择函数类别列表中,单击日期和时间
    3. 选择函数列表中,单击 DAYOFWEEK
    4. 选择函数特征符列表中,单击 DAYOFWEEK(DATE) --> INTEGER
      该函数特征符表示函数需要一个自变量。
    5. 在自变量表的列中,单击单元格,单击列表中的 R.DATE,然后按 Enter 键。
      函数表达式的语法为 DAYOFWEEK(R.DATE),如下列屏幕捕捉的第 5 部分所示:

      “函数表达式构建器”向导

    6. 单击完成以返回到构造 CASE 表达式。
      现在,新函数就显示在“简单类型 Case”页顶部的 CASE 列表中。
  4. 将七个 WHEN 子句添加至 CASE 表达式(每个子句表示一个星期的一天),以将 DAYOFWEEK 函数返回的整数转换为字符串。下表显示了 DAYOFWEEK 函数返回的每个值所需的字符串:
    DAYOFWEEK 值 生成的字符串
    1 'Sunday'
    2 'Monday'
    3 'Tuesday'
    4 'Wednesday'
    5 'Thursday'
    6 'Friday'
    7 'Saturday'
    1. 在表中,双击 WHEN 右边表达式列中的空单元格,然后输入整数 1
      在此表或与“SQL 构建器”关联的其它表中输入数据时,为了使输入生效,在单元格中输入值以后,必须按 Enter 键或将焦点切换到另一个单元格。
    2. 双击 WHEN 右边结果表达式列中的空单元格,然后输入字符串 'Sunday'
    3. 对于一个星期剩余六天中的每天,都单击添加 WHEN 子句,然后重复步骤 4a 和 4b,以便您的表看起来类似于下面的屏幕捕捉:

      已完成的 WHEN 子句表

    4. 单击完成以关闭“表达式构建器”向导。

已完成的 CASE 表达式显示在“设计”窗格的“列”页面上的列表达式列表中,还显示在 SQL 语句源代码中。

添加列别名

在 customerRentals SQL 语句中,为 CASE 列表达式添加列别名。将使用“SQL 构建器”的“设计”窗格中的“列”页面。

  1. 单击“设计”窗格中的选项卡。
  2. 单击 CASE 列表达式旁边的别名列中的单元格,然后输入 DUEDAY
    在“SQL 源代码”窗格中,列别名 AS DUEDAY 显示在 CASE 表达式后面。运行查询时,此别名显示为结果表中列的标题。

“列”页面现在看起来为如下所示:

“设计”窗格 - 已完成的“列”页面

现在,您可以开始进行练习 1.4:添加连接、查询条件和 GROUP BY 子句了。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.