sql - 在 SQL SELECT 语句中重用别名字段

标签 sql sql-server sql-server-2008 alias

我想实现这样的目标:

SELECT 
  (CASE WHEN ...) AS FieldA,
  FieldA + 20 AS FieldB
FROM Tbl

假设我用“...”替换了一个又长又复杂的CASE语句,那么在选择FieldB时我不想重复 并使用别名 FieldA 代替。

请注意,这将返回多行,因此 SELECT 语句之外的 DECLARE/SET 对于我的情况来说是不好的。

最佳答案

解决方法是使用子查询:

SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
) t
<小时/>

为了提高可读性,您还可以使用 CTE :

WITH t AS (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
)
SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM
  t

关于sql - 在 SQL SELECT 语句中重用别名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446843/

相关文章:

sql - 如何使用 "from"的 "select"子句中的参数动态生成数据集

mysql - 检查是否存在。如果存在则不插入数据,如果不存在则插入数据

SQL - 根据最近的职位更新员工头衔

sql - 如何为所有行选择 XML 字段节点

sql-server-2008 - 在 SQL Server 中完成 MYSQL 的 Group_Concat

sql-server - SQL Server 2008 全文搜索 (FTS) 与 Lucene.NET

c# - 检索 VARCHAR(MAX)

sql - 规范化数据库对资源有何影响?

sql - 如何从 Presto/AWS Athena 的数据行中删除换行符?

mysql - 具有多个相似条件的查询,按 LIKE 排序