如何解决我将如何重构此查询以相应地排列数据?
select distinct
a.contcode,decode(d.period,1,d.factor)"1YR",2,d.factor)"2YR",3,d.factor)"3YR",4,d.factor)"4YR",5,d.factor)"5YR"
from contlink a
join plans b on a.plangrp = b.plangrp
join earnings_account_classes c on a.contcode = c.account_class_code
join earnings_factors d on c.account_class_id = d.account_class_id
where b.program in ('AT','EIPP','RUP','WP','CW','MCK','PDR','TW','WR','WRR')
and b.term in (12,24,36,48,60,72,84,96,108,120)
and a.end_date is null
order by 1;
目前的数据如下所示:
CONTCODE | 1YR | 2YR | 3YR | 4YR | 5YR |
---|---|---|---|---|---|
A01 | 8.33 | ||||
A03 | 4.56 | ||||
A03 | 3.78 | ||||
A05 | 2.75 | ||||
A05 | 3.26 | ||||
A05 | 2.33 | ||||
A07 | 2.42 | ||||
A07 | 2.69 | ||||
A07 | 2.23 | ||||
A07 | 0.99 | ||||
A09 | 2.37 | ||||
A09 | 2.32 | ||||
A09 | 1.80 | ||||
A09 | 1.21 | ||||
A09 | 0.65 |
我需要它看起来像这样:
CONTCODE | 1YR | 2YR | 3YR | 4YR | 5YR |
---|---|---|---|---|---|
A01 | 8.33 | ||||
A03 | 4.56 | 3.78 | |||
A05 | 2.75 | 3.26 | 2.33 | ||
A07 | 2.42 | 2.69 | 2.23 | 0.99 | |
A09 | 2.37 | 2.32 | 1.80 | 1.21 | 0.65 |
请指教。
解决方法
也许是这样的:
select distinct
a.contcode,sum(decode(d.period,1,d.factor))"1YR",2,d.factor))"2YR",3,d.factor))"3YR",4,d.factor))"4YR",5,d.factor))"5YR"
...
group by a.contcode
order by 1;
鲍比
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。