雪花 - 枢轴查询

时间:2021-01-12 19:49:25

标签: pivot snowflake-cloud-data-platform

表 1:

ID AUDIT_KEY Col_Name
1  100        FULL NAME
2  101        FNAME
3  102        LNAME
4  103        ADDR1

表 2:

ID_key  AUDITKEY  Col_Value
1       100       john abraham
2       101       johny
3       102       Abraham
4       103       6900 Forester Rd

1  104       Praveen Gupta
2  105       Praveen
3  106       Gupta
4  107       3200 Walter RD

寻找查询以形成如下结果

ID NAME           FNAME    LNAME     ADDR1
1  JOHN ABRAHAM   JOHNY    ABRAHAM   6900 Forester Rd
2  PRAVEEN GUPTA  PRAVEEN  GUPTA     3200 WALTER RD

当我基于 ID 和 ID_KEY 加入 table2 时,在 table1 上的书面数据透视查询不起作用..任何想法伙计..

SELECT ID, NAME,FNAME,LNAME,ADDR1 
FROM TABLE1 
INNER JOIN TABLE2 ON TABLE1.ID = TABLE2.ID 
PIVOT (MAX(TABLE1.COL_NAME) 
       FOR TABLE2.COL_VALUE IN ('ID','NAME','FNAME','LNAME','ADDR1')) AS TMP

1 个答案:

答案 0 :(得分:0)

我建议在 CTE 中加入,然后根据它的乘积做支点。类似的东西:

WITH x AS (
  SELECT t1.col_name, t2.col_value
  FROM TABLE1 t1
  INNER JOIN TABLE2 t2
  ON t1.id = t2.id
  ) 
SELECT *
PIVOT (MAX(COL_NAME) 
       FOR COL_VALUE IN ('NAME','FNAME','LNAME','ADDR1')) AS TMP;

注意 - 我自己没有测试过,所以看看它是否有效。我不认为 Snowflake 喜欢在同一个查询中加入和透视,因此在 CTE 内进行联接为透视函数提供了一个单一的表输入。

另外,请注意,您在 IN 子句中有“ID”,但这不是示例数据中的 col_value 值,因此您不希望它出现在那里。这也可能是您的问题。