mysql - 带有日志数据的复杂 SQL PIVOT

标签 mysql sql pivot-table

Here

我的数据库中有这两个表,如您所见,它们具有 1->N 关系。 这是每个参与者在特定日期回答问卷的日志, 参与者每天可以回答 3 份问卷 M(上午) N(中午) E(晚上),每份问卷包含编号为 (1,2,3..) 的问题 注意:参与者的唯一键是participantid,忽略研究和组id 我需要的结果是:

Here

如您所见,每个调查问卷可以包含不同数量的问题(早上的问题包含 4 个,中午的问题包含 3 个,晚上的问题包含 2 个)。

最佳答案

您正在尝试使用行数据并将其转换为列(数据透视),即每个日期/时间/问题都将是您所需输出中的一列。

当您要转换的数据不是常量或可枚举时,这在 SQL 中通常很难做到(如果不是不可能的话)。

在这些情况下,您需要做的是从报告层访问数据并在报告级别进行数据透视,就像您可以在 SSRS 或 Qlikview 中执行的操作一样。

如果您没有报告层,正如我在评论中所说,您可以随时将数据下载到电子表格并创建数据透视表。如果你需要知道如何在Excel中进行透视,你可以在网上搜索一下,你会发现很多教程,比如这个:

https://support.office.com/en-gb/article/Quick-start-Create-a-PivotTable-report-0c220f35-e478-49aa-beaf-24018b7f0f64

您还可以使用 LibreOffice 等其他电子表格软件来创建数据透视表:

https://help.libreoffice.org/Calc/Creating_Pivot_Tables

关于mysql - 带有日志数据的复杂 SQL PIVOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931379/

相关文章:

sql - Entity Framework 与 View 的错误?

mysql - SQL获取2支球队的比赛记录

mysql - 避免在子查询(数据透视表)中重复同一查询中的多个表扫描

python - 我们如何在 Python 中实现 R 的扩展函数的功能?

php - 准备好的语句 Mysql 不工作

mysql - 查询 MySQL 以获取多次出现的数据,但前提是另一个字段不同

mysql - SQL查询更新字段

c# - Linq To SQL 和 Having

pandas - 聚合 Pandas 数据透视表中的多个字符串值

php - 我的密码有问题。安装 phpMyAdmin 时出现错误