【问题标题】:Crosstab Query results in changing column names交叉表查询导致更改列名
【发布时间】:2018-02-07 02:11:52
【问题描述】:

使用 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),这使得无法将控件绑定到.我该如何解决这个问题?也许更好的数据库设置?

【问题讨论】:

    标签: sql database ms-access


    【解决方案1】:

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

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

    这会导致:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-04
      • 2011-03-01
      • 2014-10-23
      • 2017-03-06
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多