首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将case when结果应用于SQL 2008查询中的where条件

在SQL 2008查询中,将case when结果应用于where条件可以通过子查询或者使用派生表来实现。

方法一:使用子查询 可以将case when语句作为子查询的一部分,并将其结果用作where条件。例如,假设我们有一个表格名为"employees",其中包含员工的姓名和薪水信息。我们想要查询薪水大于等于5000的员工信息,但是对于薪水大于等于10000的员工,我们想要将薪水显示为"高薪",可以使用以下查询:

代码语言:txt
复制
SELECT name, 
       CASE 
           WHEN salary >= 10000 THEN '高薪' 
           ELSE CAST(salary AS VARCHAR(10)) 
       END AS salary 
FROM employees 
WHERE CASE 
          WHEN salary >= 10000 THEN '高薪' 
          ELSE CAST(salary AS VARCHAR(10)) 
      END >= '5000';

在上述查询中,我们使用了两次相同的case when语句,一次用于选择显示的薪水,一次用于where条件。

方法二:使用派生表 另一种方法是使用派生表,将case when语句的结果作为派生表的一部分,并在主查询中引用该派生表。以下是示例查询:

代码语言:txt
复制
SELECT name, salary 
FROM (
    SELECT name, 
           CASE 
               WHEN salary >= 10000 THEN '高薪' 
               ELSE CAST(salary AS VARCHAR(10)) 
           END AS salary 
    FROM employees
) AS derived_table 
WHERE derived_table.salary >= '5000';

在上述查询中,我们首先创建了一个派生表,其中包含了case when语句的结果作为新的列"salary"。然后,在主查询中引用了这个派生表,并在where条件中使用了该派生表的"salary"列。

无论是使用子查询还是派生表,都可以将case when语句的结果应用于SQL 2008查询中的where条件。这样可以根据特定条件动态地过滤查询结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图解面试题:如何分析用户满意度?

所以,查询条件是:用户表存在学校里用户。...where 用户表.是否在系统 = '是' 把条件子句加入前面的多表查询sql里,就是下面的sql: select * from 满意度表 left join 用户表 on (满意度表.教师编号 =...这等价于: (教师编号 = 编号 且 编号在学校) 或(学生编号 = 编号,且 编号在学校) 这里“或”逻辑会将范围扩大,所以且不在学校“02”号教师也会出现在查询结果。...满意度 把这个计算公示加入前面sql语句查询结果里就是(下面的select子句): select sum(case when 满意度表.是否满意='是' then 1 else 0 end)/count...【本题考点】 ● 考察多表查询应用 ● 如何将业务需求转换为sql语句能力 ● 聚合函数运用 【举一反三】  下表是一家出行公司(比如滴滴、Uber)数据库表。

89100

图解面试题:如何分析用户满意度?

所以,查询条件是:用户表存在学校里用户。...image.png where 用户表.是否在系统 = '是' 把条件子句加入前面的多表查询sql里,就是下面的sql: 1select * 2 from 满意度表 3 left join 用户表...这等价于: (教师编号 = 编号 且 编号在学校) 或(学生编号 = 编号,且 编号在学校) 这里“或”逻辑会将范围扩大,所以且不在学校“02”号教师也会出现在查询结果。... 0 end)/count(是否满意)  2 as 满意度 把这个计算公示加入前面sql语句查询结果里就是(下面的select子句): 1 select sum(case when 满意度表.是否满意...【本题考点】 ● 考察多表查询应用 ● 如何将业务需求转换为sql语句能力 ● 聚合函数运用 【举一反三】  下表是一家出行公司(比如滴滴、Uber)数据库表。

81400

SQL Server-命令速查-CheatSheet

, sql 2012 Desc 类似如下需求: 对数据表 Table 插入对应数据 Data 如果Table 存在,而 Data 也存在数据则将其激活(set archived = 0)...之后条件可以进行扩展, 比如添加AND 或者其他条件等等 Then 后面可以接一个完整 SQL 语句 Merge 后面也可以添加各种 select 修饰符, 比如top等等 注意最后一个条件...when not matched by source 这个条件如果没有加限制条件就会修改 @db 其他所有数据 添加限制条件不能使用 f 里面的行和列, 只能使用静态条件 ----...0 的话 不需要额外操作 若部分 month 没有产值而显示为 NULL 的话 进行一下判断将其变为 0 若部分 month 没有产值导致上方表结果只有一年部分月份数据 额外 JOIN 一张表变量...然后从数据条件搜索出然后 FOR XML 3.

84110

神奇 SQL 之谓词 → 难理解 EXISTS

列名:SELECT tsc.id       也就是说如下 3 条 SQL 查到结果是一样 -- SELECT * SELECT * FROM tbl_student ts WHERE EXISTS...      因此在 SQL ,为了表达全称量化,需要将"所有的行都满足条件P" 这样命题转换成 "不存在不满足条件 P 行"   实践篇     上面的理论篇,大家看了以后可能还是有点晕,我们结合具体实际案例来看看...EXISTS 妙用     查询“不”存在数据       上面的 tbl_student学生都分配到了具体班级,假设新来了两个学生(刘德华、张家辉),他们暂时还未被分配到班级,我们如何将他们查询出来...我们再转换成它双重否定:某个学生所有行数据,如果科目是数学,则分数不低于 80;如果科目是语文,则分数不低于 50 ;我们可以按照如下顺序写出我们想要 SQL -- 1、CASE 表达式,肯定 CASE...WHEN subject = '语文' AND score < 50 THEN 1 ELSE 0 END; -- 3、结果包含了 20190610011 SQL SELECT DISTINCT

1.8K21

【Mysql-3】条件判断函数-CASE WHEN、IF、IFNULL详解

前言 在众多SQL,统计型SQL绝对是让人头疼一类,之所以如此,是因为这种SQL必然有大量判读对比。而条件判断函数就是应对这类需求利器。...本文重点总结CASE WHEN、IF、IFNULL三种函数。 1 CASE WHEN Case when语句能在SQL语句中织入判断逻辑,类似于Javaif else语句。...因此,我们希望在SQL做一些处理,如果查询结果是null,就转换为特定值,这就要用到MysqlIFNULL函数。...FROM goods WHERE name='light'; 但使用IFNULL语句,如果where条件name值是不存在,那么仍将返回null,例如: -- 返回结果:null SELECT...,而且,无论where条件存在不存在,结果都是会返回0

21K31

SQL基础查询方法

Select查询 4.1 查询基础知识 查询是对存储在 SQL Server 数据一种请求。...返回到列数据值源。 从中检索结果集数据表,以及这些表之间所有逻辑关系。(From) 为了符合 SELECT 语句要求,源表行所必须达到条件。不符合条件行会被忽略。...WHERE子句指定出条件:在Product表,只有ListPrice列值大于40,该值所在行才符合 SELECT 语句要求。...AS ProductIDName FROM Production.Product; CASE 表达式 SELECT ProductID, Name, CASE Class WHEN 'H' THEN...WHERE 和 HAVING 是筛选器。这两个子句指定一系列搜索条件,只有那些满足搜索条件行才用于生成结果集。我们称满足搜索条件行包含在结果集中。

4.2K10

金融行业项目:你每月消费多少?

1288记录 1 select * 2 from c 3 where 累计消费金额>1288; 查询结果如下: image.png 那么如何获得每个客户累计消费金额最先到达1288记录呢?...1 select * 2 from d 3 where 排序=1; 查询结果如下 image.png 3)将上诉查询结果记为表e(每个客户首次累计消费达到1288),通过“交易客户”和客户表联结...2)得出每个省行消费总金额 将上面查询结果记为表d,通过观察可知 分行号为"4","2","3"属于江苏省分行 分行号"5","6","7"属于广东省分行 利用case when 对分行号做判断...,符合条件消费金额相加,得出各省分行总消费金额。...1.如何将复杂业务问题,使用多维度拆解分析方法去解决 2.遇到多条件判断问题,要想到用case语句来实现 3.窗口函数应用场景,①遇到排名问题,要想到使用窗口函数来实现。

1K30

Sql学习笔记(二)—— 条件查询

上篇简单介绍了一下sql一些基础增删改查语句,而针对多种多样查询语句则未详细说明,这一篇继续记录一下关于各种条件查询知识。...2.where 条件查询 先举一个where 条件例子: 查询 stuGender 为0和 majorId 为2记录: 1 select * from student 2 3 where stuGender...8. case 语句 case 语句我理解,其实就是在sql语句里对查询值做出了判断,并进行分类。...比如,你在性别表里用0表示男,1表示女,此时,你可以在程序里进行转换,也可以直接在sql里即对其进行转换,在sql中就要用到 case语句了,case语句用法如下: 简单case函数 case 字段名...when 判断条件一 then 结果case 搜索函数: 语法如下: case -- case起始 when 条件一 then 结果when 条件二 then 结果when

89240

走向面试之数据库基础:二、SQL进阶之case、子查询、分页、join与视图

when 3 then '菜鸟' end ) from User 1.2 条件判断->相当于if else if else   (1)具体用法模板:     CASE       WHEN...exists做为where 条件时,是先对where查询询进行查询,然后用主查询结果一个一个代入exists查询进行判断,如果为真则输出当前这一条主查询结果,否则不输出。   ...exists后面的查询称为相关子查询,即子查询查询条件依赖于外层父查询某个属性值,其处理过程一般为:先取外层查询第一个元组,根据它与内层查询相关属性值处理内层查询,若where子句返回true...et where e.pTypeId=et.ptId)   那么,在这句SQL执行过程,我们可以将其理解为一个双重for循环,外边是主表循环遍历,然后将其放到一个temp变量,再进入从表for...从数据库系统内部来看,视图是由一张或多张表数据组成;从数据库系统外部来看,视图就如同一张表一样,对表能够进行一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。

72620

SQL CASE 表达式

这个特性可以解决很多实际问题,比如将一些复杂聚合判断条件结果SQL 结构输出,那么很可能是下面这种写法: SELECT CASE WHEN 聚合函数(字段) 符合什么条件 THEN xxx ......'no' END AS abc FROM test 原因是,只要 SQL 存在聚合表达式,那么整条 SQL 就都是聚合,所以返回结果只有一条,而我们期望查询结果不聚合,只是判断条件用到了聚合结果...WHERE CASE WHERE 后面也可以跟 CASE 表达式,用来做一些需要特殊枚举处理筛选。...比如下面的例子: SELECT * FROM demo WHERE CASE WHEN city = '北京' THEN true ELSE ID > 5 END 本来我们要查询 ID 大于 5 数据...可以写在 SQL 查询几乎任何地方,只要是可以写字段地方,基本上就可以替换为 CASE 表达式。

77730

记一次sql server 性能调优,查询从20秒至2秒

先说明一下服务器配置情况:1核CPU、2GB内存、机械硬盘、Sqlserver 2008 R2、Windows Server2008 R2 SP1和阿里云服务器,简单说就是阿里云最差服务器。...2、查询sql语句为 select* from( select *,ROW_NUMBER() OVER (ORDER BY sc desc) as rank from( select *, case...when ( 40-(a.p*( case when a.p > 0 then 1 else -0.5 end)))<=30then 30 else ( 40-(a.p*( case when a.p...2、索引包含列 分析查询sql可以得知,我们需要计算值只有UnitPrice和MaxPrice,所以想到把UnitPrice和MaxPrice添加到idx_calc包含列。如图 ?...3、再次优化查询Sql 再次分析sql语句可以把计算所有数据avg(price)语句暂时放置临时表(#temp_table),再计算其他值时候直接从临时表(#temp_table)获取数据。

1.4K60

拼多多面试题:累计求和问题如何分析?

问题: 请你写一个sql语句统计出:比赛帮助各自球队反超比分球员姓名以及对应时间 【解题步骤】 1.什么是反超比分? 我们首先来确定“反超比分”含义:反超指体育比赛中比分由落后转为领先。...如下图,红色部分为A队得分,绿色部分为B队得分,将其拆分成两列: image.png 该步骤可以用条件判断(case表达式)得出: image.png 1 select *, 2 (case...需要将上一步查询结果作为子查询: 1 select *, 2 A队累计-B队累计 as 差, 3 lag(A队累计-B队累计,1) over(order by 得分时间) as 差上一项, 4 lag...用where子句添加限制条件:【差】*【差上一项】<0 或者【差上一项】=0 且【差】*【差上两项】<0 对应SQL如下: 1 where (差 * 差上一项 < 0) or 2 (差上一项...< 0) or (差上一项=0 and 差*差上两项<0); 查询结果 image.png 【本题考点】 1.如何将复杂问题,使用多维度拆解分析方法,变成可以解决子问题 2.考查SQL运行顺序和子查询

73700

复杂 SQL 实现分组分情况分页查询

前言 在处理数据库查询时,分页是一个常见需求。 尤其是在处理大量数据时,一次性返回所有结果可能会导致性能问题。 因此,我们需要使用分页查询来限制返回结果数量。...END_TIME END AS END_TIME 2.3 根据 camp_status 字段分为 6 种情况 解释如下: WHERE CAMP_STATUS in: 这表示我们要在SQL查询添加一个条件...综上所述,这个片段作用是动态生成一个SQL查询条件,该条件检查CAMP_STATUS是否在给定campStatus列表。...通过使用变量和适当SQL语法,我们可以根据特定条件动态地构建查询,从而返回满足我们需求结果。 通过这种方式,我们可以灵活地构建和执行查询,以满足不同需求。...这对于处理大量数据和实现复杂筛选条件非常有用。 希望这篇博客能帮助你更好地理解和应用SQL分页查询和筛选功能

20810
领券