2017-12-22 23 views
3

私はSQLを使い慣れていて、Google BigQueryを使用しています。私は次のような1つのレコードを持つテーブルを持っています:繰り返し変数を使用したSQLピボット

publication_number |譲受人

米国-6044964-A |ソニー株式会社

|デジタルオーディオディスクコーポレーション

識別子、publication_numberは、一度だけ表示されて、最初の譲受人はpublication_numberと同じ行に表示され、2番目の譲受人は識別子のない追加行として表示されます。 |

publication_number:

は、私は何をしたい、次のような表を作成することですassignee1 |譲受人2

US-6044964-A |

追加の譲受人が別の列として表示されます。

Googleのパテント(パブリックデータは「繰り返し」変数と呼ばれています)を持っています。私は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 

は、私は、次のエラーが表示さ:私は、次の質問を発見した

Syntax error: Unexpected "[" at [2:36]. If this is a table identifier, escape the name with , e.g. table.name` rather than [table.name]

を/それは私がピボットhereを使用して欲しいものに似た何かを返信します。ただし、この例のように、各行に識別子がありません。

2番目の担当者用に別の列を作成するにはどうすればよいですか?以下は

答えて

2

結果が

publication_number assignee1   assignee2      assignee3 assignee4  
US-6044964-A  Sony Corporation Digital Audio Disc Corporation null  null  
ABC     xyz     abc        uvw null  
あるBigQueryの標準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` 

でそれで遊びます