创建聚合 SQL 报告,其中列基于 table 列表

Create aggregated SQL report where the columns are based on a table list

不确定是否可行,但我希望有人能为我指明正确的方向。

我有一个数据库,可以在记录更改阶段时审核日志。我需要做的是将此备份合并到一份报告中,该报告通过记录 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 |
+----+---------+---------+---------+

我可以用多个 select 查询来做到这一点,但由于我的阶段存储在 table 中,我想知道是否有办法动态构建它。这也将减少将来的维护。

我的“Audit_Log”table有以下列:

我的“舞台”存储在名为“舞台”的table列“舞台”中。

如有任何建议,我们将不胜感激。 谢谢

你可以尝试使用运算符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