1

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

[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。我希望通过 Business_Process_ID 获得 UNIQUE 错误类型(即 98、80、108 等)的计数。

有人可以帮忙吗?谢谢你。

4

1 回答 1

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
于 2012-07-26T19:47:03.883 回答