交叉表查询导致更改列名称

时间:2018-02-07 02:11:53

标签: sql database ms-access

使用Access 2016创建一个跟踪团队可用性的应用。看起来像:

+---------------------------------------------------------------+      
|                         << < 1/1/2018 > >>                    |
|        | 1/1/2018 | 1/2/2018 | 1/3/2018 | 1/4/2018 | 1/5/2018 |
+---------------------------------------------------------------+
|Jake    |Available |Unavail   |Available |Unavail   |Available |
|John    |Unavail   |Available |Available |Available |Unavail   |
+---------------------------------------------------------------+

为了能够这样做,我使用了一个交叉表查询,可以在下面找到:

PARAMETERS DayTemp DateTime;
TRANSFORM First(Schedule.Availability) AS Availability
SELECT Schedule.UserID
FROM Schedule
WHERE (((Schedule.Day)>=[DayTemp] And (Schedule.Day)<=(DateAdd("d",7,[DayTemp]))))
GROUP BY Schedule.UserID
PIVOT Format([Day],"Short Date");

这导致查询看起来像:

+---------------------------------------------+
|UserID |1/1/2018 | 1/2/2018 | .... | 1/5/2018|
+---------------------------------------------+
|1      |Available|..........|......|Unavail  |
|2      |Unavail  |..........|......|Available|
+---------------------------------------------+

我遇到的问题是列标题总是根据日期而变化(例如1/1/2018 vs 1/8/2018 vs 1/15/2018),这使得它无法绑定控制到。我该如何解决这个问题?也许更好的数据库设置?

1 个答案:

答案 0 :(得分:1)

由于您显示的是与DayTemp相关的日期,因此您也可以相对于它来表达您的列名称:

PIVOT DATEDIFF('d', [DayTemp], [Day]);

哪会导致:

+---------------------------------------------+
|UserID |0        | 1        | .... | 4       |
+---------------------------------------------+
|1      |Available|..........|......|Unavail  |
|2      |Unavail  |..........|......|Available|
+---------------------------------------------+