sql - 错误:语法错误:应为“)”,但在子查询中得到语句结束语句
问题描述
我在弄清楚应该如何结束此查询时遇到问题,因为我在 BigQuery 中不断收到错误消息。
这是一个相对较大的查询,有几个联合都遵循几乎相同的语法。当我在子查询之后结束查询时,出现错误。
错误:语法错误:应为“)”,但在 [133:54] 处得到语句结束
所有联合都遵循相同的语法——只是来自不同的表
UNION ALL
SELECT
report_date,
device_category,
data_source,
source,
medium,
LOWER(campaign_name) AS campaign_name,
conversion_type,
Brand,
goal_completion_1,
impressions,
clicks,
cost,
conversions,
profile
FROM (
SELECT
report_date,
device_category AS device,
data_source,
CASE
WHEN data_source = 'Google Ads' THEN 'google'
WHEN data_source = 'Adroll' THEN 'adroll'
WHEN data_source = 'Facebook Ads' THEN 'facebook'
WHEN data_source = 'Bing Ads' THEN 'bing'
ELSE NULL
END AS source,
CASE
WHEN data_source = 'Google Ads' THEN 'cpc'
WHEN data_source = 'Adroll' THEN 'display'
WHEN data_source = 'Facebook Ads' THEN 'paid_social'
WHEN data_source = 'Bing Ads' THEN 'cpc'
ELSE NULL
END AS medium,
0 AS goal_completion_1,
0 AS impressions,
0 AS clicks,
0 AS cost,
conversions,
profile
FROM
`table`
)
我有一个与此类似的查询,除了它以 where 语句结尾并且它似乎运行良好 - 但是当我在 from 之后添加任何内容时,我仍然得到相同的错误。
WHERE conversion_type <> 'Calls from ads'
解决方案
如果不查看整个查询,很难确定问题出在哪里。
很可能,在一个结束子查询的末尾缺少一个右括号,导致UNION
被视为在该子查询内。也可能在整个查询之前有一个括号,此时它没有被关闭。
我发现UNION
通过将每个UNION
'd 查询括在括号中,我可以在大型查询中获得更多有用的错误消息,如下所示:
(
SELECT ...
)
UNION ALL
(
SELECT ...
)
UNION ALL
(
SELECT ...
)
至少,这会导致未闭合字符警告通常在每个组结束的行号处触发,而不是在查询结束处。
虽然 Joakim 是正确的,您选择的列多于可用列,但这不是此错误消息的原因。
推荐阅读
- qliksense - 如何使用 QRS API 在 QlikSense 上创建应用程序?
- django - /user_settings/ ModelForm 处的 ValueError 没有指定模型类
- python - 将对象附加到另一个对象的列表
- html - 如何在幻灯片上方添加正文而不将其向下推?
- asp.net - Asp.net mvc - 我如何为每个用户创建一个包含其唯一数据的个人资料页面并像这样访问它=> domain.com/username
- html - 如何在Angular 6模板中减去时间值
- c++ - sycl 内核调用很慢
- asynchronous - 重载广播,使其执行异步
- sed - 如何使用 sed 和变量名称,而不在 macOS 中添加尾随换行符?
- angular - 如何访问Angular中ngOnChanges上的@Input参数以外的变量?