SQL pivot / join表?

时间:2016-03-02 18:47:20

标签: sql join pivot pervasive

这是我的实际表......

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中做到这一点,所以当我拿回数据时我可以使用它。任何帮助将不胜感激。

1 个答案:

答案 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;