如何解决创建汇总的SQL报告,其中列基于表列表
不确定是否可以,但我希望有人能指出我正确的方向。
我有一个数据库,可以在记录更改阶段审核日志。我需要做的是将其合并到一份报告中,该报告通过记录ID为我提供每个阶段的最早审核记录。也就是说,我最终得到的报告看起来像这样。
+----+---------+---------+---------+
| ID | Stage1 | Stage2 | Stage3 |
+----+---------+---------+---------+
| 1 | 1/10/20 | 1/10/20 | 3/10/20 |
| 2 | 1/10/20 | 2/10/20 | 4/10/20 |
| 3 | 2/10/20 | 2/10/20 | 3/10/20 |
+----+---------+---------+---------+
我可以使用多个选择查询来执行此操作,但是由于我的阶段存储在表中,所以我想知道是否有一种动态构建此方法的方法。这也将在将来最大程度地减少维护。
我的“ Audit_Log”表具有以下列:
- RecordID
- 阶段
- 事件日期
我的“阶段”存储在名为“阶段”列“阶段”的表中。
任何建议将不胜感激。 谢谢
解决方法
您可以尝试使用运算符 TRANSFORM
。
TRANSFORM <aggregate-function-expression>
<select-statement>
PIVOT <expression>
[IN (<column-value-list>)]
其中<aggregate-function-expression>
是使用聚合函数之一创建的表达式,
<select-statement>
包含GROUP BY子句,<column-value-list>
是期望由PIVOT表达式返回的必需值的列表,用引号括起来并用逗号分隔。 (您可以使用IN子句强制列的输出顺序。)
如果RecordID和Stage有一个event_date的值:
TRANSFORM Max(Audit_Log.Event_Date)AS stage_date
SELECT Audit_Log.RecordID
FROM Audit_Log
GROUP BY Audit_Log.RecordID
PIVOT Audit_Log.Stage
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。