带有重复变量的sql pivot

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

我是SQL新手并使用Google BigQuery。我有一个表有一条记录,如下所示:

publication_number |代理人

US-6044964-A | Sony Corporation

|数字音频光盘公司

标识符publication_number仅列出一次;第一个受理人与publication_number出现在同一行,第二个受体显示为没有标识符的附加行。

我想要做的是创建一个如下表:

publication_number |受让人1 | assignee2

US-6044964-A | Sony 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执行类似于我想要的操作。但是,我没有每个行的标识符,如该示例中所示。

如何为第二受让人创建另一列?

sql google-bigquery pivot
1个回答
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     
© www.soinside.com 2019 - 2024. All rights reserved.