我的数据库中有这两个表,如您所见,它们具有 1->N 关系。 这是每个参与者在特定日期回答问卷的日志, 参与者每天可以回答 3 份问卷 M(上午) N(中午) E(晚上),每份问卷包含编号为 (1,2,3..) 的问题 注意:参与者的唯一键是participantid,忽略研究和组id 我需要的结果是:
如您所见,每个调查问卷可以包含不同数量的问题(早上的问题包含 4 个,中午的问题包含 3 个,晚上的问题包含 2 个)。
最佳答案
您正在尝试使用行数据并将其转换为列(数据透视),即每个日期/时间/问题都将是您所需输出中的一列。
当您要转换的数据不是常量或可枚举时,这在 SQL 中通常很难做到(如果不是不可能的话)。
在这些情况下,您需要做的是从报告层访问数据并在报告级别进行数据透视,就像您可以在 SSRS 或 Qlikview 中执行的操作一样。
如果您没有报告层,正如我在评论中所说,您可以随时将数据下载到电子表格并创建数据透视表。如果你需要知道如何在Excel中进行透视,你可以在网上搜索一下,你会发现很多教程,比如这个:
您还可以使用 LibreOffice 等其他电子表格软件来创建数据透视表:
关于mysql - 带有日志数据的复杂 SQL PIVOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931379/