我正在尝试在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)。
非常感谢您的任何帮助。
答案 0 :(得分:1)
这需要在CustomerID列上进行自联接。这个问题没有明确命名来源,所以我称之为CS
。自连接与其他连接没有什么不同,只有别名是必需的,以便可以分别引用同一源的不同实例。别名为CS1
和CS2
。
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;
研究该查询的结果 - 并了解自联接 - 希望将来有助于制作类似的查询。