我有一个 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 编译错误:
<块引用>第 2 行语法错误,位置 68 意外''
答案 0 :(得分:1)
您的第一个查询将不起作用,因为您需要明确指定您在第二个查询中尝试的列名称。您的第二个查询在值中使用双引号而不是单引号。您还缺少一个结束括号。
select * from SURVEY_PERSON_QUESTION_RESPONSE
pivot(max(SURVEY_ID) for QUESTION_ID in ('FirstName', 'LastName'));
雪花文档中有一些很好的例子,如果你需要参考:
https://docs.snowflake.com/en/sql-reference/constructs/pivot.html#examples