SQL:在查询的其他部分引用计算列

标签 sql sql-server sql-server-2012

我想在 SQL Server 2012 中执行以下操作:

SELECT UnitPrice * Quantity as SubTotal,
       SubTotal * (1-0.13) as Tax,
       Tax + SubTotal as Total
FROM Invoice

据我所知,这是不可能像上面写的那样做到的,但是我想知道是否有一种特殊的方法来动态识别列,可以在查询中的其他地方引用它,例如“字段列表” (SELECT 子句的一部分),作为 WHERE 子句的一部分或 ORDER BY 子句中。

任何帮助将不胜感激。

最佳答案

部分解决方案(然而,在许多情况下就足够了)具有构造:

with Query as (
  select SubTotal as SubTotal,
         SubTotal * (1 - 0.13) as Tax,
         SubTotal * (1 - 0.15) as AnotherTax -- etc.
    from Invoice
)

select SubTotal,
       Tax,
       Tax + SubTotal as Total
  from Query

关于SQL:在查询的其他部分引用计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895757/

相关文章:

sql-server - 即使 SET PARSEONLY 设置为 ON,SQL Server 也会插入值

c# - 通过C#语句备份SQL Server数据库

sql-server - 如何在 SQL 中计算 IPv6 CIDR 路由前缀?

ssis - 如何清理 SSISDB?

sql - Group By 问题 - 需要为唯一的列组合获取最近的行

sql - 为什么 SQL 查询中会引用未知列

sql - 具有列最小值的行

sql-server - 用于转义 LIKE 运算符通配符搜索的 T-SQL 特殊字符

sql-server - SQL Server 安装错误 : Failed to launch local ScenarioEngine. exe

php - 重复的名字