结合TRANSFORM ...... PIVOT和UNION查询

时间:2013-09-03 10:29:34

标签: mysql sql ms-access

这是我第一次在这里发帖,但这个网站过去给我提供了很多答案,所以我试试看。

背景信息:我正在使用Acces 2013,通过ODBC 3.51连接到MySQL数据库。

我正在忙着从呼叫详细记录中提取报告,即我想概述不同员工在不同电话线上接收和拨打电话的时间。

我已经发现我无法进行两个单独的TRANSFORM ... PIVOT查询和UNION那些。这是有道理的,因为代码无法知道我的2个查询将返回相同数量的Pivots。

是否可以改变这个过程? (首先在UNION中收集所需的数据,然后转换数据)。

我创建了以下Union查询来收集相关数据:

(SELECT dbo_IpPbxCDR.DestinationName AS [Name], Sum(DateDiff('n',[dbo_IpPbxCDR.starttime],[dbo_IpPbxCDR.endtime])) AS [Called Time], IIf((dbo_IpPbxCDR.CalledName Like "*0900*") OR (dbo_IpPbxCDR_1.CalledName like "*0900*"), "0900", "abo") AS [Called Line]
FROM (dbo_IpPbxCDR AS dbo_IpPbxCDR_1 RIGHT JOIN dbo_IpPbxCDR ON dbo_IpPbxCDR_1.CallId = dbo_IpPbxCDR.TransferredCallId2)
WHERE <Where clause relevant to the data I want. It’s pretty long so I omitted it>
GROUP BY dbo_IpPbxCDR.DestinationName, IIf((dbo_IpPbxCDR.CalledName Like "*0900*") OR (dbo_IpPbxCDR_1.CalledName like "*0900*"), "0900", "abo"))
UNION
(SELECT dbo_IpPbxCDR.OriginationName AS [Name], Sum(DateDiff('n',[dbo_IpPbxCDR.starttime],[dbo_IpPbxCDR.endtime])) AS [Called Time], 'uit' AS [Called Line]
FROM dbo_IpPbxCDR
WHERE <Where clause relevant to the data I want. It’s pretty long so I omitted it>
GROUP BY dbo_IpPbxCDR.OriginationName)

我正在尝试转换Sum(DateDiff('n',[dbo_IpPbxCDR.starttime],[dbo_IpPbxCDR.endtime])),因此我可以使用pivot Month([dbo_IpPbxCDR.starttime])

获取与某些月份相关的数据

我很感激我能得到的任何帮助/建议!

0 个答案:

没有答案