在MS Access查询中计算行和列中的唯一值

时间:2012-07-26 19:38:31

标签: sql ms-access count

我目前有一个如下所示的表格:

[BUSINESS_PROCESS_ID]   [Error Type 1]    [Error Type 2]     [Error Type 3]
     PVT02                  108                                  93
     PVT02                   98   
     PVT02                   80              80                  80
     PVT02                   80              
     PVT02                   93   
     PVT02                   27              80
     PVT03                   21   
     PVT03                   102  
     PVT03                   80   
     PVT03                   80                                  102
     PVT03                   80   
     PVT03                   80   
     PVT03                   71

基于每个Business_Process_Id,我正在寻找一个计算每个唯一错误类型的查询。 IE浏览器。查询输出应如下所示:

[BUSINESS_PROCESS_ID]    [Error Type]  [Count of Unique Error Types Combined]
     PVT02                  108                     1
     PVT02                   98                     1
     PVT02                   80                     5
     PVT02                   93                     2
     PVT02                   27                     1
     PVT02                   98                     1
     PVT03                   21                     1
     PVT03                   102                    2
     PVT03                   80                     4
     PVT03                   71                     1

正如您所看到的,我并不关心计数是否是错误类型1,2或3.我希望获得唯一错误类型的计数(即98,80,108等)按Business_Process_ID。

有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:3)

实现此目的的一种方法是使用UNION查询首先将所有错误类型放入单个列中。然后,您可以使用简单的查询将结果聚合到您希望如何看到它们。

SELECT BUSINESS_PROCESS_ID, [Error Type 1] as ErrorType
FROM TableName
UNION ALL
SELECT BUSINESS_PROCESS_ID, [Error Type 2] as ErrorType
FROM TableName
UNION ALL
SELECT BUSINESS_PROCESS_ID, [Error Type 3] as ErrorType
FROM TableName

将其另存为查询。

然后,在类似于以下内容的聚合查询中使用此查询:

SELECT BUSINESS_PROCESS_ID, ErrorType, Count(ErrorType) as Number_Of_Errors
FROM MyUnionQuery
GROUP BY BUSINESS_PROCESS_ID, ErrorType