SQLpivot/jointable?
SQL pivot/join table?
这是我的实际 table...
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
这是我想要的 table...
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
我只有两种类型的路由器,但它们的序列号应该表示相同的意思,这就是我尝试合并结果的原因。我知道的唯一方法是进行 2 个单独的查询,每个查询都针对一个路由器,但我仍然需要以某种方式组合并最终将它们转换为枢轴。
我不确定我想要做的事情是否最好在数据库外用另一种语言完成,但我希望在 sql 内完成,所以当我取回数据时我可以使用它。任何帮助将不胜感激。
您在寻找条件聚合吗?
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;
这是我的实际 table...
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
这是我想要的 table...
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
我只有两种类型的路由器,但它们的序列号应该表示相同的意思,这就是我尝试合并结果的原因。我知道的唯一方法是进行 2 个单独的查询,每个查询都针对一个路由器,但我仍然需要以某种方式组合并最终将它们转换为枢轴。
我不确定我想要做的事情是否最好在数据库外用另一种语言完成,但我希望在 sql 内完成,所以当我取回数据时我可以使用它。任何帮助将不胜感激。
您在寻找条件聚合吗?
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;