我无法理解为什么CTE不能从WHERE子句中引用 a 。在下面的代码中,第一个查询工作正常,但在第二个查询中,只需用WHERE计算该值的 CTE替换子句中的值,就会产生错误“'where 子句'中的未知列'cte'”。
# This query works
SELECT * FROM stock_prices
WHERE Country_Exchange_Code = 'T' AND Stock_Code IN ('1332');
# But this query produces an error
WITH
cte AS (SELECT '1332')
SELECT * FROM stock_prices
WHERE Country_Exchange_Code = 'T' AND Stock_Code IN (cte);
# Here is some data to test these two queries with
CREATE TABLE stock_prices (Country_Exchange_Code VARCHAR(2), Stock_Code VARCHAR(4), Date DATE, Close FLOAT);
INSERT INTO stock_prices VALUES
("T", "1301", '2019-10-29', …Run Code Online (Sandbox Code Playgroud)