Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将行显示为列的查询结果_Sql_Pivot_Crosstab - Fatal编程技术网

Sql 将行显示为列的查询结果

Sql 将行显示为列的查询结果,sql,pivot,crosstab,Sql,Pivot,Crosstab,我有一个动态创建复选框的表单。用户登录并在所有复选框中选择0。复选框数组是从“选项”表生成的。表单将记录提交到两个表“调查”(一条个人数据记录)和“选择”(调查键和选项键)。 我想拿出一份报告,将所有可能的选项显示为列标题,并列出从调查表中选择该选项的人员列表。所以我的结果是这样的: FirstAid Triage Firefighting HamRadio Sam Sue Sam Judy Judy B

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

    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获得所需的结果


感谢

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

选项1:在下列链接的解决方案中使用
语句时使用
Case

选项2:使用
tablefunc contrib
中可用的
交叉表功能,就像在下面链接的解决方案中所做的那样。



交叉表func contrib的文档免责声明:我已经好几年没有使用Postgres了,因此可能有比我列出的更好的方法来完成这项任务

选项1:在下列链接的解决方案中使用
语句时使用
Case

选项2:使用
tablefunc contrib
中可用的
交叉表功能,就像在下面链接的解决方案中所做的那样。



交叉表func contrib的文档执行透视/交叉表查询的方法因数据库类型而异。请说明您是否正在使用Oracle、MySql、Sql Server等。它是postgres 8.1。表单是PHP,我使用PDO查询数据库,并使用Pear Excel Writer将结果发送到Excel。塔克斯——但是,任何方法都可以。我主要是寻找逻辑。执行透视/交叉表查询的方法因数据库类型而异。请说明您是否正在使用Oracle、MySql、Sql Server等。它是postgres 8.1。表单是PHP,我使用PDO查询数据库,并使用Pear Excel Writer将结果发送到Excel。塔克斯——但是,任何方法都可以。我主要是在寻找逻辑。谢谢。我已经通读了其中的一些,但很难将它们应用到我的情况中。谢谢你的指点,谢谢。我已经通读了其中的一些,但很难将它们应用到我的情况中。谢谢你的指点。