SELECT 和 WHERE 返回不同的输出

问题描述 投票:0回答:1

我试图找出为什么 SELECT Holiday_Flag = 1 和 WHERE Holiday_Flag = 1 返回不同的输出。我想使用 WHERE 的原因是为了在输出期间不显示 Holiday_Flag 列。但是,它们都使用来自同一个表的数据,并且 Holiday_Flags 列是 INT。

代码如下:

SELECT Date, SUM(CAST(Weekly_Sales AS FLOAT)) AS Weekly_Sales
FROM WalmartSalesClean 
WHERE Holiday_Flag = 1
GROUP BY Date
ORDER BY Weekly_Sales DESC;

输出:

WHERE output

它仅包含 10 行。

但是这段代码包含 143 行:

SELECT Holiday_Flag = 1, Date, SUM(CAST(Weekly_Sales AS FLOAT)) AS Weekly_Sales
FROM WalmartSalesClean
GROUP BY Date
ORDER BY Weekly_Sales DESC;

输出:

SELECT Output

我尝试过

WHERE='1'
SELECT = '1'
,但似乎没有改变任何东西。为什么 SELECT 和 WHERE 返回不同的输出,即使它们都过滤 Holiday_Flags = 1?

sql select where-clause
1个回答
0
投票

SELECT Holiday_Flag = 1
在结果中定义一个名为
Holiday_Flag
的列,其值始终为常量
1
。它不会将任何源表中的 Holiday_Flag 列与值 1 进行比较。它不会且无法
 过滤任何行。您只能通过 
WHEREON
CROSS APPLY
HAVING
 子句过滤行。

© www.soinside.com 2019 - 2024. All rights reserved.