首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数的BigQuery SQL语法错误(“语法错误:预期")”但got关键字at [7:18]")

函数的BigQuery SQL语法错误(“语法错误:预期")”但got关键字at [7:18]")
EN

Stack Overflow用户
提问于 2020-01-03 18:25:07
回答 1查看 3.6K关注 0票数 0

我需要在一个列(cont_url)中连接基于dev_id的数据。我能够用这个查询在MS中成功地完成这个任务,但是我需要在BigQuery中完成这个任务。

代码语言:javascript
运行
复制
select
    dev_id,
    stuff(
    (SELECT '|||' + cont_url
      FROM `test_table_sample`
        WHERE  dev_id = a.dev_id
         FOR XML PATH (''))                --Error is here
        , 1, 1, '') as testlist
from
    `test_table_sample` as a
group by
    dev_id

当我在Big中挂载表并尝试运行相同的查询时,我会得到一个语法错误。

期望值为")“,但在7:18为got关键字

我不知道我做错了什么,BigQuery标准的SQL语法与T有什么不同。

我已经包括了一个样本数据表。

代码语言:javascript
运行
复制
test_table_sample
dev_id  cont_url
Device1 Link1
Device1 Link2
Device1 Link3
Device1 Link4
Device2 anotherLink1
Device2 anotherLink2
Device2 anotherLink3
Device2 anotherLink4
Device2 anotherLink5

以下是查询的结果。

代码语言:javascript
运行
复制
Results 
dev_id  cont_url
Device1 Link1|||Link2|||Link3|||Link4
Device2 anotherLink1|||anotherLink2|||anotherLink3|||anotherLink4|||anotherLink5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-03 18:27:15

BigQuery允许您只聚合字符串。语法要简单得多:

代码语言:javascript
运行
复制
select dev_id, string_agg(cont_url, '|||') as testlist
from `test_table_sample` as a
group by dev_id;

尽管如此,我强烈建议您使用数组:

代码语言:javascript
运行
复制
select dev_id, array_agg(cont_url) as testlist
from `test_table_sample` as a
group by dev_id;

比笨拙地分隔字符串要好得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59583509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档