我是SQL新手并使用Google BigQuery。我有一个包含一条记录的表,如下所示:
publication_number |受让人
US-6044964-A | Sony Corporation
| Digital Audio Disc Corporation
标识符publication_number仅列出一次;第一个受让人出现在与publication_number相同的行上,第二个受让人只显示为没有标识符的附加行。
我想要做的是创建一个如下表格:
publication_number |受让人1 | assignee2
US-6044964-A | Sony Corporation | Digital Audio Disc Corporation
如果附加受让人出现在另一栏中。
我拥有谷歌的专利 - 公共数据所称的重复"重复"变量。我在BigQuery中尝试了以下查询:
SELECT pvt.publication_number, pvt.[1] as assignee1, pvt.[2] as assignee2
FROM `main_tables.main_table5`
PIVTO (
MAX(assignee)
FOR publication_number IN([1],[2])
) as pvt
我收到以下错误:
语法错误:意外" ["在[2:36]。如果这是表标识符, 使用
来转义名称, e.g.
table.name`而不是[table.name]
我发现以下问题/回复与使用pivot here的内容类似。但是,我没有像该示例中那样拥有每行的标识符。
如何为第二受让人创建另一列?
答案 0 :(得分:2)
下面是BigQuery Standard SQL,应该给你一个想法
#standardSQL
SELECT
publication_number,
assignee[SAFE_OFFSET(0)] assignee1,
assignee[SAFE_OFFSET(1)] assignee2,
assignee[SAFE_OFFSET(2)] assignee3,
assignee[SAFE_OFFSET(3)] assignee4
FROM `yourproject.yourdataset.yourtable`
您可以使用以下虚拟数据进行测试/播放
#standardSQL
WITH `yourproject.yourdataset.yourtable` AS (
SELECT 'US-6044964-A' publication_number , ['Sony Corporation', 'Digital Audio Disc Corporation'] assignee UNION ALL
SELECT 'ABC', ['xyz', 'abc', 'uvw']
)
SELECT
publication_number,
assignee[SAFE_OFFSET(0)] assignee1,
assignee[SAFE_OFFSET(1)] assignee2,
assignee[SAFE_OFFSET(2)] assignee3,
assignee[SAFE_OFFSET(3)] assignee4
FROM `yourproject.yourdataset.yourtable`
结果是
publication_number assignee1 assignee2 assignee3 assignee4
US-6044964-A Sony Corporation Digital Audio Disc Corporation null null
ABC xyz abc uvw null