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