雪花枢轴

时间:2021-02-03 01:35:52

标签: sql snowflake-cloud-data-platform

我有一个 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 意外''

1 个答案:

答案 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

相关问题