sql - SQL:无法使用“with as”来保存选定的结果
问题描述
我有一个内部连接结果,我想使用它来保存它,with as
但收到一个错误。我用的是雪花。
我的代码:
with t as (select *
from
(select ID, PRICE from DB.TABLE1
WHERE PRICE IS NOT NULL and ID = '1111') A
inner join
(select ID, BID, ACCEPTED from DB.TABLE2
WHERE BID IS NOT NULL and ID = '1111') B
ON A.ID = B.ID);
错误:SQL compilation error: syntax error line 8 at position 25 unexpected ';'.
如果我只运行内部连接
select *
from
(select ID, PRICE from DB.TABLE1
WHERE PRICE IS NOT NULL and ID = '1111') A
inner join
(select ID, BID, ACCEPTED from DB.TABLE2
WHERE BID IS NOT NULL and ID = '1111') B
ON A.ID = B.ID
我得到了这个结果
ID, PRICE,ID,BIDS,ACCEPTED
1111,180,1111,200,FALSE
1111,180,1111,180,FALSE
1111,180,1111,180,FALSE
1111,180,1111,100,TRUE
知道为什么我收到错误消息吗?
解决方案
WITH
是用于引入公用表表达式的语法。这是在单个查询中使用的表达式。它很像FROM
子句中的子查询,只是它可以被多次引用。
所以正确的用法是:
with t as (
select . . .
)
select count(*)
from t;
换句话说,您需要遵循with
使用 CTE 的东西。否则,您希望将结果存储在一个真实的表中——临时的或其他的。
推荐阅读
- bash - shell 脚本中字符“\”的用途
- typescript - getElementById 的类型检查仅适用于可选链接,不适用于类型检查
- swift - 如何将变量存储为 @AppStorage 变量的键
- python - 获取 Aurora Data API 以返回 JSON
- mongodb - 在 travis 上连接到 mongodb 被拒绝
- javascript - ReactJS 在两层打字稿上调用父方法
- php - Kubernetes Ingress NGINX for Laravel 通过 fast-cgi
- swiftui - SwiftUI 中“DocumentGroups”的“FileDocument”和“ReferenceFileDocument”有什么区别?
- windows - 无法在 Dockerfile 中安装 DataDog MSI
- ruby-on-rails - Rails 6 gem client_side_validations 应用于上下文不工作的模型