在Access 2016中,我有以下表格:
Table1
------
| ID | FK_ID | Status_date |Status_ID |
---------------------------------------
| 1 | 11 | d1 | 1 |
| 2 | 11 | d2 | 2 |
| 3 | 22 | d3 | 3 |
| 4 | 22 | d4 | 3 |
LookupTable1
------------
| OBJ_ID | Status |
-------------------
| 1 | A |
| 2 | B |
| 3 | C |
我想产生以下结果。这最终将导出到Excel。
xls report
==========
| FK_ID | Status_1_date | Status_2_date | Status_3_date | <-- these will be aliased
=========================================================
| 11 | d1 | d2 | |
| 22 | | | d4 |
我正在努力解决的难题的部分是,似乎至少有这些不同的方法来实现这一点a)多个Access查询b)具有内联查询的单个Access查询(可能?)c)VBA代码d)在SQL Server本身e)其他...创建和维护它的最简单方法是什么,因为LookupTable1.Status值会发生变化。
看起来像一个简单的CROSSTAB查询:
TRANSFORM Max(Table1.Status_date) AS MaxOfStatus_date
SELECT Table1.FK_ID
FROM Table1
GROUP BY Table1.FK_ID
PIVOT Table1.Status_ID;
如果希望输出显示“状态别名”值,请首先加入两个表,然后使用“状态”字段作为CROSSTAB中的列标题。