我有一个动态创建复选框的表单。用户登录并为所有复选框选择0。复选框数组是从表'options'生成的。表格将记录提交到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来获得我需要的结果?
由于
答案 0 :(得分:1)
免责声明:我在几年内没有使用过Postgres,因此可能有比我列出的更好的方法来完成这项任务。
选项1:使用Case
When
语句,如以下链接解决方案中所做的那样。
correct way to create a pivot table in postgresql using CASE WHEN
选项2 :使用Crosstab
中提供的tablefunc contrib
功能,如以下链接解决方案中所做的那样。
PostgreSQL Crosstab Query
crosstab tablefunc contrib
http://www.postgresql.org/docs/9.1/static/tablefunc.html