这是我的实际表......
ID SEQ HOURS ROUTER
1 1000 13 Old
1 2000 23 Old
1 3000 17 Old
2 1111 43 New
2 2222 40 New
3 1111 16 New
3 2222 18 New
4 1000 19 Old
4 2000 31 Old
4 3000 10 Old
这是我想要的表......
ID ALPHA BRAVO
1 36 17
2 43 40
3 16 18
4 50 10
这里需要有一些逻辑,我可以这样说:
Old Router's 1000 + 2000 = Alpha
New Router's 1111 = Alpha
Old Router's 3000 = Bravo
New Router's 2222 = Bravo
我只有两种类型的路由器,但是它们的seq号应该是相同的,这就是为什么我要尝试组合结果。我所知道的唯一方法是采用2个单独的查询,每个查询都针对一个路由器,但我仍然需要以某种方式将它们组合并最终转向它们。
我不确定我想要做的是最好用另一种语言在数据库之外完成,但是希望在sql中做到这一点,所以当我拿回数据时我可以使用它。任何帮助将不胜感激。
答案 0 :(得分:3)
您在寻找条件聚合吗?
select id,
sum(case when router = 'old' and seq in (1000, 2000) then hours
when router = 'new' and seq = 1111 then hours
else 0
end) as alpha,
sum(case when router = 'old' and seq in (3000) then hours
when router = 'new' and seq = 2222 then hours
else 0
end) as bravo
from t
group by id;