SQL pivot - 交叉表和多列

时间:2014-07-11 20:42:39

标签: sql ms-access pivot

我有2个交叉表查询都可以工作,但我想将它们组合在一起。

第一个显示每个基地使用各种车辆的总时间:

TRANSFORM Sum(Cdbl(Nz(M.dtTripTime, 0))) AS SheetTime

SELECT M.lngVehicleID
    ,Sum(Cdbl(Nz(M.dtTripTime, 0))) AS Total
FROM tblSheets M
INNER JOIN Bases B ON M.lngBaseID = B.BaseID
GROUP BY M.lngVehicleID
PIVOT B.BaseName IN (
        'Alpha'
        ,'Bravo'
        ,'Charlie'
        );

第二个显示每辆车在不同基地的行程次数:

TRANSFORM Count(M.lngSheetID) AS SheetCount

SELECT M.lngVehicleID
    ,Sum(Cdbl(Nz(M.dtTripTime, 0))) AS Total
FROM tblSheets M
INNER JOIN Bases B ON M.lngBaseID = B.BaseID
GROUP BY M.lngVehicleID
PIVOT B.BaseName IN (
        'Alpha'
        ,'Bravo'
        ,'Charlie'
        );

我理想的是生成一个交叉表,显示每个车辆在不同基础上的组合时间和行程次数。这可能吗?上面的查询超出了我对SQL的非常有限的能力!

1 个答案:

答案 0 :(得分:0)

在Access中,交叉表只允许一个值,一个列变量和几个行变量,但是您可以根据上面的两个进行第三个查询,键入lngVehicleID,沿着以下行 - 我认为需要VBA解决方案的其他东西,但是没有必要。

我假设您的交叉表分别以crosstab1crosstab2为灵感保存,命名。

[未经测试]

Select * from crosstab1
inner join crosstab2 on crosstab1.lngVehicleID=crosstab1.lngVehicleID
order by crosstab1.lngVehicleID