1

我有一个动态创建复选框的表单。用户登录并为所有复选框选择 0。复选框数组是从表“选项”生成的。表单将记录提交到 2 个表“调查”(个人数据的一条记录)和“选择”(调查键和选项键(或键))。我想提取一份报告,该报告将所有可能的选项显示为列标题,其中包含调查表中选择该选项的人员列表。所以我的结果看起来像这样:

    FirstAid   Triage    Firefighting  HamRadio
    Sam         Sue        Sam
    Judy        Judy       Bill
                Bob

因此,所有选项都会显示在结果中,即使没有人选择它。

表的结构是:

     OPTIONS
     option_id   description

     SURVEY
     survey_id   name

     SELECTED OPTIONS
     survey_id   option_id

这是实际数据的简化示例,但包括关键部分(我认为)。如何使用 SQL 获得所需的结果?

谢谢

4

1 回答 1

1

免责声明:我已经好几年没有使用 Postgres 了,所以可能有比我列出的更好的方法来完成这项任务。

选项 1:使用Case When以下链接解决方案中的语句。
使用 CASE WHEN 在 postgresql 中创建数据透视表的正确方法

选项 2:使用以下链接解决方案中Crosstab提供的功能。http://www.postgresql.org/docs/9.1/static/tablefunc.html的PostgreSQL 交叉表查询 文档tablefunc contrib


crosstab tablefunc contrib

于 2011-10-03T18:56:47.813 回答