Microsoft Access交叉表查询中显示的多个客户ID的计数

时间:2017-09-04 17:57:00

标签: ms-access crosstab

我正在尝试在Microsoft Access中构建一个交叉表查询,该查询执行以下操作

开始数据

Segment  |   Customer ID

10       |    5

12       |    5

11       |    5

11       |    7

10       |    10

12       |    10

输出

      10  |  11  |   12

10     2  |  1   |  2

11     1  |  2   |  1

12     2  |  1   |  2

基本上,我试图在两个独立细分市场的customerID相同时显示细分。例如,customerID 5在段10和10之间共享。 12和客户ID 10在段10和10之间共享。 12这样在10&的十字路口的桌子上12它显示2(所有客户的数量分别为10和12)。

非常感谢您的任何帮助。

1 个答案:

答案 0 :(得分:1)

这需要在CustomerID列上进行自联接。这个问题没有明确命名来源,所以我称之为CS。自连接与其他连接没有什么不同,只有别名是必需的,以便可以分别引用同一源的不同实例。别名为CS1CS2

TRANSFORM Count(CS1.CustomerID) AS CountOfCustomerID
SELECT CS1.Segment
FROM CS AS CS1 INNER JOIN CS AS CS2 ON CS1.CustomerID = CS2.CustomerID
GROUP BY CS1.Segment
ORDER BY CS1.Segment, CS2.Segment
PIVOT CS2.Segment;

虽然在这种情况下可以在单个select语句中定义所有必要的连接作为CrossTab查询的一部分,但在没有变换的情况下单独查看Select结果通常很有启发性。换句话说,我建议检查

SELECT CS1.Segment AS Segment1, CS2.Segment AS Segment2, CS1.CustomerID AS CustomerID
FROM CS AS CS1 INNER JOIN CS AS CS2 ON CS1.CustomerID = CS2.CustomerID
ORDER BY CS1.Segment, CS2.Segment, CS1.CustomerID;

研究该查询的结果 - 并了解自联接 - 希望将来有助于制作类似的查询。