在内联查询之外的 Where 子句中使用内联查询别名

Using Inline Query Alias in Where clause outside of inline Query

我已经看到了解决方案,link 但它对我帮助不大。

我的问题是如何在 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

错误消息-

Msg 156, Level 15, State 1, Line 11 Incorrect syntax near the keyword 'WHERE'.

您缺少派生的 table 别名

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

试试这个:

 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