assesspigeonholeassesscollection还是前面的问题,前面没有仔细说清楚抱歉
现在我有2张数据表结构如下表A
A_id A_key_id A_key_value
1    1          20.0
1    2          10.0
1    3          15.0
1    4          30.0
1    5          40.02    1          15.0
2    2          25.0
2    3          15.0
2    4          35.0
2    5          10.0表B
B_key_id B_key_percent B_key_name
1          10%         语文
2          20%         数学
3          30%         英语
4          15%         化学
5          25%         物理我现在要求计算结果是
A_key_id=B_key_id 时 A_key_value*B_key_percentkey_id  A_key_value*B_key_percent1        (20.0*10%)
2        (10.0*20%)
3        (15.0*30%)
4        (30.0*15%)
5        (40.0*25%)
最后在把这些结果相加
根据 A_id=1  时 全部相乘后的总和
要求结果集是这样的格式语句格式 select xx as 语文,xx as 数学,xx as 英语, xx as 化学, xx as 物理 from table
由于要做Excel导出 必须对应别名和等于select sum(a.A_key_value*b.B_key_percent/100) from table_A a left join table_B b on a.keyid=b.keyid
where a.keyid=b.keyid group by a.A_id由于数据库的值是竖着插入的,现在要横着显示比较麻烦
 语文,  数学,  英语,   化学,   物理  , 和 
20.0    10.0   15.0     30.0    40.0   
15.0    25.0   15.0     35.0    10.0

解决方案 »

  1.   

    select 
    tt.A_id,
    sum(decode(tt.A_key,1,tt.A_key_value)) as 語文,
    sum(decode(tt.A_key,2,tt.A_key_value)) as 數學,
    sum(decode(tt.A_key,3,tt.A_key_value)) as 英語,
    sum(decode(tt.A_key,4,tt.A_key_value)) as 化學,
    sum(decode(tt.A_key,5,tt.A_key_value)) as 物理,
    sum(decode(tt.A_key,99,tt.A_key_value)) as 合計
    (
    select * from A
    union all
    select A_id,99,sum(subject) sub
    from
    (select A.A_id,(A.A_key_value*b.B_key_percent/100) subject from A
    left join b on a.keyid=b.keyid) t
    group by t.A_id
    )tt
    group by tt.A_id