以下是我所做的,可能会对您有所帮助,或者至少可以帮助您入门。我为您希望输出的每个小时(8-9、9-10、10-11 等)创建了查询。然后我创建了一个最终查询,它使用UNION 处理所有查询。
您可能已经有的查询示例:
SELECT TIMEVALUE(T1.StartTime)
FROM Table1 AS T1
WHERE (TIMEVALUE(T1.StartTime) Between '8:00:00 AM' And '8:59:59 AM');
第二:
SELECT TIMEVALUE(T1.StartTime)
FROM Table1 AS T1
WHERE (TIMEVALUE(T1.StartTime) Between '9:00:00 AM' And '9:59:59 AM');
等等……
最终查询示例:
SELECT '' AS [8-9],'' AS [9-10],'' AS [10-11]
FROM [8-9AM]
UNION
SELECT T1.*,'',''
FROM [8-9AM] AS T1
UNION
SELECT '',T2.*,''
FROM [9-10AM] AS T2
UNION ALL SELECT '','',T3.*
FROM [10-11AM] AS T3
(and so on...);
注意:我必须创建一个空白的第一行才能正确命名我机器上的列。不知道你是否会遇到同样的问题。
编辑:可能是一种更简单的方法,只使用一个表:
SELECT ID,
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '8:00:00 AM' And '8:59:59 AM',
TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '8:00:00 AM' And '8:59:59 AM', ''
) AS [8-9],
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '9:00:00 AM' And '9:59:59 AM', TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '9:00:00 AM' And '9:59:59 AM', ''
) AS [9-10],
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '10:00:00 AM' And '10:59:59 AM',
TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '10:00:00 AM' And '10:59:59 AM', ''
) AS [10-11],
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '11:00:00 AM' And '11:59:59 AM', TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '11:00:00 AM' And '11:59:59 AM', ''
) AS [11-12],
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '12:00:00 AM' And '12:59:59 AM',
TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '12:00:00 AM' And '12:59:59 AM', ''
) AS [12-1],
SWITCH(
TIMEVALUE(T1.StartTime) BETWEEN '1:00:00 AM' And '1:59:59 AM', TIMEVALUE(T1.StartTime)
,TIMEVALUE(T1.StartTime) NOT BETWEEN '1:00:00 AM' And '1:59:59 AM', ''
) AS [1-2]
FROM Table1 AS T1