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

如何在SQL Server的From部分中给出case when语句值

在SQL Server的From部分中给出case when语句值,可以使用子查询或者公共表表达式(CTE)来实现。

  1. 使用子查询: 可以将case when语句放在子查询中,并将其作为表引入到From部分。例如:
代码语言:txt
复制
SELECT *
FROM (
    SELECT column1, column2, 
        CASE 
            WHEN condition1 THEN value1
            WHEN condition2 THEN value2
            ELSE value3
        END AS new_column
    FROM your_table
) AS subquery
WHERE new_column = 'some_value';

在上述示例中,我们在子查询中使用了case when语句,并将其结果作为新的列(new_column)引入到From部分。然后,我们可以在外部查询中使用这个新的列进行过滤或其他操作。

  1. 使用公共表表达式(CTE): 公共表表达式(CTE)是一种临时命名的查询结果集,可以在查询中多次引用。可以将case when语句放在CTE中,并在From部分引用该CTE。例如:
代码语言:txt
复制
WITH cte AS (
    SELECT column1, column2, 
        CASE 
            WHEN condition1 THEN value1
            WHEN condition2 THEN value2
            ELSE value3
        END AS new_column
    FROM your_table
)
SELECT *
FROM cte
WHERE new_column = 'some_value';

在上述示例中,我们使用WITH关键字创建了一个CTE(cte),其中包含了case when语句。然后,我们可以在外部查询中引用这个CTE,并使用其中的列进行过滤或其他操作。

无论是使用子查询还是CTE,都可以在From部分中给出case when语句的值,并在后续的查询中使用这个值进行进一步的操作。

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

相关·内容

T-SQL基础(一)之简单查询

SQL是一种声明式编程语言,即只需表明需要什么而无需关注实现细节(C#LINQ也是如此)。 SQL方言:在SQL标准基础上延伸其它语言,SQL Server中所使用T-SQL。...:LIKE '%x' 运算符 SQL运算符与高级编程语言(C#,JAVA)类似。当多个运算符出现在同一表达式时,SQL Server会按照运算符优先级进行计算。...几条建议: SQL关键字均使用大写字母 SQL语句均使用分号结尾 SQL中使用对象完全限定名,:DbName.dbo.TableName 查询语句执行顺序 SQL查询语句逻辑处理过程与实际查询过程...,WHERE子句中多个表达式计算并没有确定顺序。 CASE...WHEN... CASE表达式是标量表达式,返回一个符合条件。注意,CASE是表达式,不是语句,与COUNT类似。...'666' WHEN 1+1=2 THEN '' ELSE '你猜' END FROM WJChi.dbo.UserInfo; CASE表达式若未指定ELSE返回,则默认为ELSE NULL

4.1K20

SQLSERVER 存储过程 语法

*** 本版:SQL SERVER 版!...(**) 一、简介:    存储过程(Stored Procedure), 是一组为了完成特定功能SQL 语句,集经编译后 存储在数据库,用户通过指定存储过程名字并给出参数...,如果该存储过程带有参数来执行 它, 在SQL Server 系列版本,存储过程分为两类:系统提供存储过程和用户自定义存储过程 。...系统SP,主要存储master 数据库,并以sp_为前缀并且系统存储过程主要是从系统表获取 信息,从而为系统管理员管理SQL Server。...,在首次运行一个存储过程时,查询优化器对其进 行分析优 化,并给出最终被存在系统表执行计划,而批处理Transaction-SQL 语句在每次运行时 都要进行 编译和优化

2.6K20

数据分析SQL如何解决业务问题

SELECT +FROM +WHERE +(BETWEEN /IN) 是SQL查询地基此简单查询可以应对部分提数需求,例如运营想查看某段时间订单多表查询即INNER JOIN、LEFT JOIN 等联结关键字想象取数可能是直接在某个表...”→ 翻译:课程效果可通过学生成绩反映,即是要计算成绩最大、最小、学生成绩分布 → SQL语句必备知识汇总分析即GROUP BY关键字解决业务问题:计算每个课程学生平均成绩:SELECT avg...必备知识存储过程即PROCEDURE,可以将某业务需求,或者数据产品报表对应所有SQL语句放在一起,方便一键执行,RFM模型里语句可以写成存储过程,计算结果实时同步到前端「SQL SERVER...,可通过关键字「CASE WHEN」实现字段拆分与合并:将收货地址字段拆为省、市、镇等字段,可通过「CONCAT」「LEFT」「RIGHT」「SUBSTRING」等函数实现整体分析在开始真正分析之前...R,F,M平均值获得所有用户RFM与阈值比较,通过「CASE WHEN」转为 '高'、'低' 两个根据RFM高低通过「CASE WHEN」将所有用户划分到八个人群总结建议根据前文进行分析,即可总结得出结论

1.3K00

《SQLSERVER2012之T-SQL教程》T-SQL单表查询(二)「建议收藏」

需要注意是,CASE是表达式而不是语句,它不允许你控制活动流或是做一些基于条件逻辑操作。不过,它返回是基于条件逻辑。...'Unkonwn Categroy' END AS categoryname FROM Production.Products; 简单格式在CASE关键字后具有单个测试或表达式,与WHEN...T-SQL支持某些函数,可以看作是CASE表达式缩写形式,ISNULL、COALESCE、IIF和CHOOSE。这4和函数只有COALESCE是标准。...遗憾是,SQL Server不支持短路,它基于标准SQL同事操作概念,SQL Server可以按任意顺序自由处理WHERE子句中表达式。...例如,CASE表达式WHEN子句计算顺序是有保证,可以按如下方式修改: SELECT col1, col2 FROM dbo.T1 WHERE CASE WHEN col1 = 0

1.7K20

SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

Suppliers WHERE Country='Germany'; SQL CASE 表达式 SQL CASE 表达式遍历条件并在满足第一个条件时返回一个(类似于 if-then-else 语句)...resultN ELSE result END; SQL CASE 示例 在下面的示例,我们使用了 Northwind 示例数据库 "OrderDetails" 表部分选择: OrderDetailID...CASE 示例 以下 SQL 遍历条件并在满足第一个条件时返回一个: SELECT OrderID, Quantity, CASE WHEN Quantity > 30 THEN 'The quantity...WHEN City IS NULL THEN Country ELSE City END); SQL NULL 函数 在 SQL ,处理可能包含 NULL 情况是很常见。...+ COALESCE(UnitsOnOrder, 0)) FROM Products; SQL Server SQL Server ISNULL() 函数允许您在表达式为 NULL 时返回替代

36210

MySql应该如何将多行数据转为多列数据

不过,可以使用 MySQL GROUP BY 和 CASE WHEN 语句来自定义实现。...可以使用如下 SQL 语句实现: 复制代码SELECT name, MAX(CASE WHEN course_name = '语文' THEN score END) AS Chinese...= '英语' THEN score END) AS English FROM student GROUP BY name; 这条 SQL 语句执行步骤是: 根据学生姓名分组; 在每个分组内...,使用 CASE WHEN 语句根据课程名称动态生成一列新; 使用 MAX() 函数筛选出每个分组最大,并命名为对应课程名称; 将结果按照学生姓名进行聚合返回。...如果使用 PIVOT 正常情况下需要使用第一种方法自己手动构造查询,如果有更高级需求 CUBE ROLLUP 等只有 Pivot 才能支持,需要考虑换用非开源数据库操作(Oracle、SQL Server

1.6K30

数据库工程师常见面试题

如果要在 INSERT 操作中省略某些字段,这些字段需要 满足一定条件:该列定义为允许空;或者表定义时给出默认,如果不给出,将使用默认。...答: 可以用以下 SQL 语句实现: select (case when a>b then a else b end ), (case when b>c then b esle c end) from...显示格式: 语文 数学 英语 及格 优秀 不及格 答: 可以用以下 SQL 语句实现: select (case when 语文>=80 then '优秀’when 语文>=60 then ‘及格...when 英语>=80 then ‘优秀’ when 英语>=60 then ‘及格’ else ‘不及格’) as 英语, from table 问题 17: 一个表 Id 有多个记录,把所有这个...答: 存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动 时自动运行存储过程。

3K40

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

上篇简单介绍了一下sql一些基础增删改查语句,而针对多种多样查询语句则未详细说明,这一篇继续记录一下关于各种条件查询知识。...通配符 [ 某字符(可不止一个字符) ] :括号字符,只要某字段首位包含其中任意一个字符,则会查询出来,须配合%或者_使用; 比如:[南北],则会把字段里有南和北其中任意一个字记录查询出来...这里需要注意是,[]字符必须是某字段首个字符,常用于搜索姓 什么 的人群。...8. case 语句 case 语句理解,其实就是在sql语句里对查询做出了判断,并进行分类。...比如,你在性别表里用0表示男,1表示女,此时,你可以在程序里进行转换,也可以直接在sql里即对其进行转换,在sql中就要用到 case语句了,case语句用法如下: 简单case函数 case 字段名

89340

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

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包含列。如图 ?...然后执行查询sql语句,发现执行时间再次减半,只要6313毫秒,现在已经从之前20多秒优化成6秒多。...3、再次优化查询Sql 再次分析sql语句可以把计算所有数据avg(price)语句暂时放置临时表(#temp_table),再计算其他时候直接从临时表(#temp_table)获取数据。

1.4K60

MySQL存储过程了解一下

简介 存储过程(Stored Procedure)是在大型数据库系统,一组为了完成特定功能SQL 语句集,它存储在数据库,一次编译后永久有效,用户通过指定存储过程名字并给出参数(如果该存储过程带有参数...OUT,表示存储过程输入参数,该参数会在存储过程初始化为NULL,当存储过程返回时,该也会被返回,调用者可以看到被修改后。...sex=0 THEN SET @sex='女'; ELSE SET @sex='未知'; END IF; END; CASE语句 CASE语句有两种写法: 语法1: CASE WHEN...1 THEN 处理语句 [WHEN 2 THEN 处理语句]......[ELSE 处理语句] END CASE 语法2: CASE WHEN 条件判断 THEN 处理语句 [WHEN 条件判断 THEN 处理语句] ...

1.3K20

SQL Cookbook》 - 第二章 查询结果排序

一般而言,可以根据一个没有被包含在SELECT列列来排序,但是必须明确地指定列名。但是当查询语句中含有GROUP BY或者DISTINCT,那么不能按照SELECT列表之外列进行排序。...(job)-2); SQL Server,第三个参数,既可以是2,还可以大于2, select ename,job   from emp order by substring(job,len((job...translate函数和replace函数删除每一行数字或者字符,即可按照剩余部分排序。...NULL排序 DB2、MySQL、PG和SQL Server,需要增加辅助列, 非Null按照comm升序排列,全部Null放到最后,删除desc,则放到最前, select ename, sal..., comm from emp order by case when job='SALESMAN' then comm else sal end; 或者, select ename, sal,

99010
领券