我有一个包含5个字段的表。其中两个字段将具有匹配的重复值。我想我需要使用一个或两个JOINS来获得我想要的数据结果。
字段:Machine, Message, Date, Severity, ID
具有重复项的两个字段是Machine和Message。
示例数据:
MACHINE | MESSAGE
--------------------
MACHINE1 | ERROR1
MACHINE2 | ERROR1
MACHINE3 | ERROR1
MACHINE2 | ERROR2
MACHINE2 | ERROR2
MACHINE3 | ERROR3
MACHINE1 | ERROR3
MACHINE1 | ERROR1
我需要结果如下:
MACHINE1, 2 - ERROR1, 1 - ERROR3
MACHINE2, 1 - ERROR1, 2 - ERROR2
MACHINE3, 1 - ERROR1, 1 - ERROR3
我一直在努力寻找答案但未找到答案。我相信我需要加入一两个可能的GROUP BY
。
答案 0 :(得分:1)
create table #machineErrors (Machine nvarchar(20), Error nvarchar(20))
insert into #machineErrors values ('Machine1','Error1')
insert into #machineErrors values ('Machine2','Error1')
insert into #machineErrors values ('Machine3','Error1')
insert into #machineErrors values ('Machine2','Error2')
insert into #machineErrors values ('Machine2','Error2')
insert into #machineErrors values ('Machine3','Error3')
insert into #machineErrors values ('Machine1','Error3')
insert into #machineErrors values ('Machine1','Error1')
select Machine, COUNT(*), [Error]
from #machineErrors
group by Machine, [Error]
order by Machine, [Error]
答案 1 :(得分:0)
我不明白完整的问题但看起来你正在寻找SQL中的一个转向功能,根据机器上的不同错误(1,2,3)聚合你的结果。
假设是MSSQL?因此,查询基于您希望聚合的3个错误的假设。
SELECT Machine, [Error1], [Error2], [Error3]
FROM
MessageTable
Pivot
(
COUNT(Machine)
FOR ErrorColumn
IN ([Error1], [Error2], [Error3])
)