繁体   English   中英

雪花Pivot

[英]Snowflake Pivot

我有一个 4 列的表 SurveyID、QuestionID、PersonID、Response,其中包含大约 300 多个唯一问题(QuestionId)。 我想将 QuestionID 拆分成列以拥有 300 多列。

with c as
(select Distinct QUESTION_ID from "SURVEY_PERSON_QUESTION_RESPONSE"
where SURVEYID = 'SURVEY1')

select * 
  from "SURVEY_PERSON_QUESTION_RESPONSE"
    pivot(max(SURVEY_ID) for QUESTION_ID in c 

我还试图让它在 300 多个问题 ID 值中的几个上运行:

  select * from SURVEY_PERSON_QUESTION_RESPONSE
    pivot(max(SURVEY_ID) for QUESTION_ID in ("FirstName", "LastName")

我得到 SQL 编译错误:

position 68 意外''处的语法错误第 2 行

您的第一个查询将不起作用,因为您需要明确指定您在第二个查询中尝试的列名。 您的第二个查询在值中利用双引号而不是单引号。 您还缺少一个结束括号。

select * from SURVEY_PERSON_QUESTION_RESPONSE
    pivot(max(SURVEY_ID) for QUESTION_ID in ('FirstName', 'LastName'));

如果您需要参考,Snowflake 文档中有一些很好的示例:

https://docs.snowflake.com/en/sql-reference/constructs/pivot.html#examples

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM