Microsoft Access 交叉表查询中显示的多个客户 ID 的计数
Posted
技术标签:
【中文标题】Microsoft Access 交叉表查询中显示的多个客户 ID 的计数【英文标题】:Count of multiple customer ID shown in a Microsoft Access crosstab query 【发布时间】:2017-09-04 17:56:59 【问题描述】:我正在尝试在 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 和 12 之间共享,客户 ID 10 在段 10 和 12 之间共享,因此在 10 和 12 交叉点的表上显示 2(同时在段 10 和12).
您的任何帮助将不胜感激。
【问题讨论】:
【参考方案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;
研究该查询的结果 - 并了解自联接 - 希望有助于将来制作类似的查询。
【讨论】:
以上是关于Microsoft Access 交叉表查询中显示的多个客户 ID 的计数的主要内容,如果未能解决你的问题,请参考以下文章