带有重复变量的sql pivot
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有重复变量的sql pivot相关的知识,希望对你有一定的参考价值。
我是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执行类似于我想要的操作。但是,我没有每个行的标识符,如该示例中所示。
如何为第二受让人创建另一列?
答案
下面是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
以上是关于带有重复变量的sql pivot的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server - Pivot 将行转换为列(带有额外的行数据)