创建聚合 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有以下列:
- 记录ID
- 阶段
- Event_Date
我的“舞台”存储在名为“舞台”的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
不确定是否可行,但我希望有人能为我指明正确的方向。
我有一个数据库,可以在记录更改阶段时审核日志。我需要做的是将此备份合并到一份报告中,该报告通过记录 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有以下列:
- 记录ID
- 阶段
- Event_Date
我的“舞台”存储在名为“舞台”的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