2017-04-06 12 views
2

次のようなBig Queryで計算された列を作成したいと考えています。不足IDを記入するために計算された列

商品IDと製品セグメントIDの表があります。しかし、製品セグメントの価値は一部欠落しています。そこで私は、以下のように欠落している製品のセグメントID「ProdSeg IDが」満たされている別の列「ProdSed IDのCalc」を作成したいと思います:

Product ID  ProdSeg ID  ProdSed ID Calc 
 
1    1    1 
 
1    Null   1 
 
1    Null   1 
 
2    Null   5 
 
2    5    5 
 
2    5    5 
 
3    Null   18 
 
3    Null   18 
 
3    18    18

を誰も私を助けてもらえますか?

UPDATE Your_Table as A 
SET ProdSegID = 
(Select [ProdSeg ID]  
FROM Your_Table as B 
Where B.Product ID = A.Product ID and [ProdSeg ID] is not null ) 

あなたが尋ねた何をする必要がある場合:ここ

UPDATE Your_Table as A 
SET [ProdSed ID Calc] = 
(Select [ProdSeg ID]  
FROM Your_Table as B 
Where B.Product ID = A.Product ID and [ProdSeg ID] is not null ) 

をしかし、注意してください、作るあなたが元のテーブルを更新する必要がある場合は

種類は Albertok

答えて

0

BigQueryでは、おそらくテーブルを実際に更新したくないでしょう。代わりに、次のコマンドを使用してオンザフライで生成できます。

select t.*, 
     max(ProdSegID) over (partition by ProductId) as ProdSedID_Calc 
from t; 

このロジックをビューに配置し、ビューをクエリできます。

+0

ありがとうございました。ゴードンの解決策は私のためにうまくいった。 – Albertok

+0

種類について アルブレヒト – Albertok

0

についてProduct IDProdSeg ID(ヌルではないもの)がであることを確認してください。です。

0

BigQueryの標準SQLについては、以下を試してみてください

#standardSQL 
WITH segments AS (
    SELECT ProductID, MAX(ProdSegID) AS ProdSegIDCalc 
    FROM yourTable 
    GROUP BY ProductID 
) 
SELECT t.ProductID, t.ProdSegID, s.ProdSegIDCalc 
FROM yourTable AS t 
JOIN segments AS s 
ON t.ProductID = s.ProductID 
ORDER BY ProductID 
あなたはそれはあなたの質問からダミーデータを使用してプレイする/テストすることができ

#standardSQL 
WITH yourTable AS (
    SELECT 1 AS ProductID, 1 AS ProdSegID UNION ALL 
    SELECT 1, NULL UNION ALL 
    SELECT 1, NULL UNION ALL 
    SELECT 2, NULL UNION ALL 
    SELECT 2, 5 UNION ALL 
    SELECT 2, 5 UNION ALL 
    SELECT 3, NULL UNION ALL 
    SELECT 3, NULL UNION ALL 
    SELECT 3, 18 
), 
segments AS (
    SELECT ProductID, MAX(ProdSegID) AS ProdSegIDCalc 
    FROM yourTable 
    GROUP BY ProductID 
) 
SELECT t.ProductID, t.ProdSegID, s.ProdSegIDCalc 
FROM yourTable AS t 
JOIN segments AS s 
ON t.ProductID = s.ProductID 
ORDER BY ProductID 

注:私は個人的に - 私が使用して行くだろうAnalytic Functionsゴードンの答えで示唆されているように。しかし、より多くのオプションを提供したいと思っています。実際のユースケースに応じて、多かれ少なかれ役立ちます。

関連する問題