【问题标题】:Doing arithmetic on alias in SQL在 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

但是,这不起作用,因为它没有将 MYALIASNAME1MYALIASNAME2 视为列。任何想法我怎样才能做到这一点?

我正在使用 H2,特别是 h2-1.3.173.jar。我在服务器模式下使用它。

谢谢。

【问题讨论】:

  • stackoverflow.com/questions/6081436/… 请看看这对你有什么意义。
  • 请告诉我们这是什么具体的数据库系统 - 许多事情是特定于供应商的。你在使用 MySQL 吗?后格雷斯? SQL 服务器?甲骨文? IBM DB2?完全不同的东西?请更新您的标签以显示您正在使用的数据库系统(以及它的哪个版本!) - 谢谢!

标签: sql alias h2


【解决方案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"
        

        【讨论】:

          猜你喜欢
          • 2021-06-21
          • 1970-01-01
          • 1970-01-01
          • 2014-10-02
          • 1970-01-01
          • 2022-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多