【问题标题】:Using Inline Query Alias in Where clause outside of inline Query在内联查询之外的 Where 子句中使用内联查询别名
【发布时间】:2019-07-26 13:27:35
【问题描述】:

我已经看到了解决方案,链接sql using query alias in where clause,但对我没有多大帮助。

我的问题是如何在 where 子句中使用内联别名进行外部查询,因为我在 where 条件的外部查询中使用内联别名收到错误消息。

我的查询是-

USE db_Stock_Market;
    GO
    SELECT * FROM STOCK_DATA_FOR_ANALYSIS
    --The days where there is 2% or more drop
    SELECT * FROM (
        SELECT 
            Date, Symbol, LEAD(BID_Open) OVER (ORDER BY Date) AS Purchase_price, 100/LEAD(BID_Open) OVER (ORDER BY Date) AS Shares,
            (BID_Close-BID_Open)/BID_Open AS Day_Return, 100 AS Purchase
                FROM STOCK_DATA_FOR_ANALYSIS
                   )
                    WHERE Day_Return< -0.02

错误信息-

消息 156,级别 15,状态 1,第 11 行 关键字“WHERE”。

【问题讨论】:

    标签: sql sql-server sql-server-2012 alias


    【解决方案1】:

    您缺少派生表别名

    SELECT * FROM (
            SELECT 
                Date, Symbol, LEAD(BID_Open) OVER (ORDER BY Date) AS Purchase_price, 100/LEAD(BID_Open) OVER (ORDER BY Date) AS Shares,
                (BID_Close-BID_Open)/BID_Open AS Day_Return, 100 AS Purchase
                    FROM STOCK_DATA_FOR_ANALYSIS
    )A WHERE Day_Return< -0.02
    

    【讨论】:

      【解决方案2】:

      试试这个:

       USE db_Stock_Market;
      GO
      SELECT * FROM STOCK_DATA_FOR_ANALYSIS
      --The days where there is 2% or more drop
      SELECT * FROM (
          SELECT 
              Date, Symbol, LEAD(BID_Open) OVER (ORDER BY Date) AS Purchase_price, 
              100/LEAD(BID_Open) OVER (ORDER BY Date) AS Shares,
              (BID_Close-BID_Open)/BID_Open AS Day_Return, 
              100 AS Purchase
          FROM STOCK_DATA_FOR_ANALYSIS
          ) as X
      WHERE Day_Return< -0.02
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多