在嵌入式查询之外的Where子句中使用嵌入式查询别名

时间:2019-07-26 05:22:38

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

我已经看到了一个解决方案,链接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”。

2 个答案:

答案 0 :(得分:3)

您缺少派生表别名名称

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

答案 1 :(得分:-1)

尝试一下:

 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