• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 安全稳定 > 正文

    Case函数在信息查询中应用:indirect函数跨表引用

    来源:六七范文网 时间:2019-04-04 04:48:02 点击:

      摘要 信息管理系统已深透到生活工作中和各个部分,在信息管理系统中很重要的一部分是从中得到所需要的信息,Case 函数在信息查询中有着不可替代的作用,本文就Case 函数在信息查询中的应用进行了探讨。
      关键词 信息管理系统;查询;CASE函数
      中图分类号O1 文献标识码A 文章编号 1674-6708(2012)79-0092-02
      当前信息经济时代,信息是企业发展不可或缺的重要组成部分,它有时决定着一个企业的发展甚至生存。在企业信息管理系统中,信息查询是最重要的组成部分之一,通过查询可以得到企业生产的基本信息、企业的生产信息、企业的经营信息及相关的其它信息,通过这些信息的分析,可以用来指导企业的生产和经营决策。下面结合实际应用,给出了Case 函数在信息查询中应用示例,以帮助大家掌握对查询的应用。
      1 CASE函数介绍
      1.1CASE函数形式
      CASE函数有两种形式。
      1.1.1简单 CASE 函数
      格式:CASE 输入表达式
      WHEN 当表达式 THEN 结果表达式[ ...n ]
      [ELSE 其它结果表达式]
      END
      功能:首先计算输入表达式,然后按指定顺序判断每个 WHEN 子句的当表达式是否与输入表达式相等,返回第一个相等的结果表达式的值;如果没有相等的,则当指定 ELSE 子句时 SQL Server 将返回其它表达式的值;若没有指定 ELSE 子句,则返回 NULL 值。
      1.1.2 CASE 搜索函数
      格式:CASE
      WHEN 布尔表达式 THEN 结果表达式[ ...n ]
      [ELSE 其它结果表达式]
      END
      功能:按指定顺序求每个 WHEN 子句布尔表达式的值,返回第一个取值为 TRUE 的结果表达式的值;如果没有取值为 TRUE的布尔表达式,则当指定 ELSE 子句时 SQL Server 将返回其它结果表达式的值;若没有指定 ELSE 子句,则返回 NULL 值。
      1.2参数说明
      1)输入表达式:任何有效的 Microsoft?SQL Server?表达式;
      2)当表达式:任意有效的 SQL Server 表达式。输入表达式和每个当表达式的数据类型必须相同,或者是隐性转换;
      3)N:占位符,表明可以使用多个 “WHEN当表达式THEN 结果表达式”子句或 “WHEN 布尔表达式 THEN结果表达式”子句;
      4)结果表达式和其它结果表达式:是任意有效的 SQL Server 表达式;
      5)布尔表达式:任意有效的布尔表达式。
      1.3结果类型
      从结果表达式和其它结果表达式的类型集合中返回最高的优先规则类型。
      2 数据表及说明
      下表是宿舍信息管理系统中的宿舍分数表,w1-w5分别是星期一到星期五的分数,其中没有成绩的为当天没有查此宿舍。
      3 CASE在信息查询中应用
      3.1查询周平均分
      由于星期一到星期五不是每天查所有的宿舍,没有被查的宿舍成绩为null,如果直接把null的数据与其它数据进行计算,结果还是为null,所以计算平均分数时,不可以使用下面语句进行计算和查询。
      SELECT 楼号,宿舍,平均分=(w1+w2+w3+w4+w5)/5 FROM 分数表
      需要使用CASE函数把每天的分数进行转化,有成绩的按成绩计算,没有成绩的不计算在内或者说按0计算,并用相似的方法统计宿舍被查的天数,最后计算平均值,查询语句格式如下。
      SELECT 楼号,宿舍,平均分=(case when s1 is not null then s1 else 0 end
      +case when s2 is not null then s2 else 0 end
      +case when s3 is not null then s3 else 0 end
      +case when s4 is not null then s4 else 0 end
      +case when s5 is not null then s5 else 0 end)/
      (case when s1 is not null then 1 else 0 end
      +case when s2 is not null then 1 else 0 end
      +case when s3 is not null then 1 else 0 end
      +case when s4 is not null then 1 else 0 end
      +case when s5 is not null then 1 else 0 end)
      FROM 分数表
      3.2多条件不定组合模糊查询
      在宿舍管理过程中,经常会遇到多条件不同组合模糊查询的需求,为了很好地完成这个功能,可以设计一个存储过程,使用CASE函数和CHARINDEX函数来完成查询条件的设置。例如经常需要查询某班、某宿舍、男生或女生的分数情况;这些条件的组合有多种,有时需要查某班宿舍的分数,有时需要查某班男生或女生宿舍的分数,有时需要查某宿舍的分数。可以设计下面代码的存储过程。
      DECLARE @class varchar(10),@SEX varchar(2),@hotel varchar(10);
      SELECT *
      FROM 分数表
      WHERE CHARINDEX(
      (CASE WHEN @class = "" THEN 班级编号 ELSE @class END),
      FirstName
      ) > 0   AND CHARINDEX(
      (CASE WHEN @SEX = "" THEN 性别 ELSE @SEX END),
      性别
      ) > 0
      AND CHARINDEX(
      (CASE WHEN @hotel = "" THEN 宿舍 ELSE @hotel END),
      宿舍
      ) > 0
      3.3统计查询每系部男生女生各优秀宿舍数目
      在分数表中,只有班级编号,没有班级名信息,其中bj1-bj3是化工系班级,bj4-bj6是建工系班级,其它为计算机系班级。在按系部统计男女生优秀宿舍的数目时,需要首先把班级编号转化为系部,然后再统计各系部的优秀宿舍数目,可以使用CASE函数把班级编号转化为具体系部,如果平均分为98分以上的为优秀,查询语句的格式如下:
      SELECT
      CASE 班级编号
      WHEN "bj1" THEN "化工系"
      WHEN "bj2" THEN "化工系"
      WHEN "bj3" THEN "化工系"
      WHEN "bj4" THEN "建工系"
      WHEN "bj5" THEN "建工系"
      WHEN "bj6" THEN "建工系"
      ELSE "计算机系" END 系部,性别, count(*) 数量
      INTO 优秀宿舍数
      FROM 宿舍成绩表
      WHERE 平均分>=98
      GROUP BY CASE 班级编号
      WHEN "bj1" THEN "化工系"
      WHEN "bj2" THEN "化工系"
      WHEN "bj3" THEN "化工系"
      WHEN "bj4" THEN "建工系"
      WHEN "bj5" THEN "建工系"
      WHEN "bj6" THEN "建工系"
      ELSE "计算机系" END,性别
      3.4表格转换
      有时需要把表格转换成更适合人们习惯、更易接受的表格。下面把优秀宿舍数表(字段:系部,性别,数量)转化为各系优秀宿舍数表(字段:系部,男,女),使用Case函数来完成此功能。
      SELECT 系部,
      SUM(CASE WHEN 性别="男"THEN
      数量 ELSE 0 END)‘男’, -统计男性宿舍
      SUM(CASE WHEN 性别="女"THEN
      数量 ELSE 0 END)‘女’ -统计女性宿舍
      INTO 各系优秀宿舍数
      FROM 优秀宿舍数
      前面是CASE函数在信息查询中的几个方面的应用,通过这几个实例可以看到,CASE函数功能很强,如果应用好CASE函数,可以大大提高我们查询的功能和查询效率,它的应用还不止这么多,这需要我们去总结和挖掘。

    推荐访问:信息查询 函数 Case