具有多个按日期列出的值的透视表

时间:2017-05-08 16:12:30

标签: sql ms-access pivot

我想知道是否找到了以下链接的故障单解决方案 Pivot on multiple fields and export from Access

我试图以下列格式从访问表中获取结果: V1 (值1)是一个数字, V2 (值2)是时间戳( hh:mm:ss)。

基本上报告会在当月推出,所以最终每个月的每一天都会有一天的顶部,以及每天相应的数字和时间值。

               April 1          April 2          April 3
Manager      V1   V2         V1      V2         V1      V2
John Doe     4   5:43:12      1    0:56:32      2    3:15:12

这是一段经过的时间。我一直在关注艾伦布朗的帖子,我认为我的方式很多。我创建了两个表:1)用于 V1 ,这是一个拨号数; 2) V2 总通话时间。然后我使用了Allen Browne的方法,但我无法得到hh:mm:ss中的时间格式。它就是在基表中的那种方式,但无论我尝试它总是似乎只显示1位数。

TRANSFORM Sum(IIf([FldName]="DIALS",Val([DIALS].[DIALS]),
              Val(Format([T‌​ALKTIME].[TT],"hh:nn‌​:ss")))) AS TheValue 
SELECT TALKTIME.Manager, DIALS.TW_Program_Code, 
       [DIALS]![VSE_FirstName] & " " & [DIALS]![VSE_Surname_Name] AS REP 
FROM tblXtabColumns, TALKTIME 
INNER JOIN DIALS 
ON (TALKTIME.TW_Program_Code = DIALS.TW_Program_Code) 
AND (TALKTIME.VSE_FirstName = DIALS.VSE_FirstName) 
AND (TALKTIME.VSE_Surname_Name = DIALS.VSE_Surname_Name) 
AND (TALKTIME.Period = DIALS.Period) AND (TALKTIME.[Manager] = DIALS.[Manager])
WHERE (((Month([TALKTIME].[Period])) = Month(Now())-1)) 
GROUP BY TALKTIME.Manager, DIALS.TW_Program_Code, 
         [DIALS]![VSE_FirstName] & " " & [DIALS]![VSE_Surname_Name] 
PIVOT [DIALS].[Period] & " " & [FldName];

1 个答案:

答案 0 :(得分:0)

那是一天中的时间还是已经过的时间?

回顾http://allenbrowne.com/ser-67.html#MultipleValues。不能有多行标题。日期必须与提供V1和V2标题的字段连接。是否有一个字段可用于提供“V1”和“V2”标题?如果没有,请计算它。一种方式:

SELECT *, DCount("*","Table1","Manager='" & [Manager] & "' AND ID <" & [ID])+1 AS Seq FROM Table1 WHERE Month([datefield]) = 4 AND Year([datefield])=2017;

现在在CROSSTAB中使用该查询。构建2个CROSSTAB查询并加入它们或使用Allen Browne方法。示例CROSSTAB仅转动“V1”数据。

TRANSFORM First(Query1.Reading) AS DailyReading SELECT Query1.Manager FROM Query1 GROUP BY Query1.Manager PIVOT Format([ReadDate],"mmm d") & " : " & [Seq] & "Reading";