微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建汇总的SQL报告,其中列基于表列表

如何解决创建汇总的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 举报,一经查实,本站将立刻删除。