在 SQL 中对别名进行算术运算
Posted
技术标签:
【中文标题】在 SQL 中对别名进行算术运算【英文标题】:Doing arithmetic on alias in SQL 【发布时间】:2013-11-19 05:35:21 【问题描述】:在我的 SQL 查询中,我需要对别名进行一些算术运算。
SELECT
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2,
MYALIASNAME1 - MYALIASNAME2 AS MYALIASHNAME3
FROM
MYTABLE
但是,这不起作用,因为它没有将 MYALIASNAME1
和 MYALIASNAME2
视为列。任何想法我怎样才能做到这一点?
我正在使用 H2,特别是 h2-1.3.173.jar。我在服务器模式下使用它。
谢谢。
【问题讨论】:
***.com/questions/6081436/… 请看看这对你有什么意义。 请告诉我们这是什么具体的数据库系统 - 许多事情是特定于供应商的。你在使用 mysql 吗?后格雷斯? SQL 服务器?甲骨文? IBM DB2?完全不同的东西?请更新您的标签以显示您正在使用的数据库系统(以及它的哪个版本!) - 谢谢! 【参考方案1】:试试这个。
SELECT X.MYALIASNAME1 - X.MYALIASNAME2 AS MYALIASNAME3 FROM
(
SELECT
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2
FROM
MYTABLE
)X
【讨论】:
【参考方案2】:不要使用别名
SELECT
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2,
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN - MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASHNAME3
FROM
MYTABLE
或者使用中间步骤
SELECT MYALIASNAME1, MYALIASNAME2, MYALIASNAME1 - MYALIASNAME2 AS MYALIASHNAME3
FROM (
SELECT
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2
FROM
MYTABLE
) TableAlias
【讨论】:
【参考方案3】:使用常用表表达式:
with cte as (
select MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2
from table
)
select MYALIASNAME1 - MYALIASNAME2 AS MYALIASHNAME3 from cte
【讨论】:
【参考方案4】:它会起作用的......
"SELECT
MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME1,
MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN AS MYALIASNAME2,
(MY_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN) - (MY_SECOND_COMPLEX_EXPRESSION_USING_SUM_AND_CASEWHEN) AS MYALIASHNAME3
FROM
MYTABLE"
【讨论】:
以上是关于在 SQL 中对别名进行算术运算的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 Python 中对 FITS 文件使用算术运算?
Oracle-18-select语句初步&SQL中用算术表达式&别名的使用&连接运算符%distinct&where子句
使用简单算术运算和别名时,即使表中的数据不为零,JDBC 查询也会返回零
MySQL运算符,SQL,算术比较逻辑位,优先级,正则表达式,完整详细可收藏