[英]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.