笔试中碰到一数据库的题目,苦思已久未得答案,大家帮忙解答下
admin 发表于 2010-04-25 | 来源:互联网 | 阅读:
题目如下:
已知表tab:
T1 F1 F2 F3
A 1 甲类支出 1000
A 2 已类支出 2000
A 3 丙类支出 3000
B 1 甲类支出 4000
B 3 丙类支出 2000
写sql语句得到的结果如下表:
T1 甲类支出 乙类支出 丙类支出
A 1000 2000 3000
B 4000 0 2000
高人帮忙指点下

行转列… 意见将这个问题放到sql区问问
以前碰到过使用count(),sum()以及子查询解决的……比较长
子查询搞定
SQL code
select t.t1,
sum(decode(t.f2, ‘甲类支出’, t.f3, 0)) as 甲类支出,
sum(decode(t.f2, ‘乙类支出’, t.f3, 0)) as 乙类支出,
sum(decode(t.f2, ‘丙类支出’, t.f3, 0)) as 丙类支出
from test_row2column t
group by t.t1
SQL codeselect t.t1,sum(decode(t.f2, ‘甲类支出’, t.f3, 0)) as 甲类支出,sum(decode(t.f2, ‘乙类支出’, t.f3, 0)) as 乙类支出,sum(decode(t.f2, ‘丙类支出’, t.f3, 0)) as 丙类支出from test_row2column t group by t.t1……正解
SQL codeselect t.t1,sum(decode(t.f2, ‘甲类支出’, t.f3, 0)) as 甲类支出,sum(decode(t.f2, ‘乙类支出’, t.f3, 0)) as 乙类支出,sum(decode(t.f2, ‘丙类支出’, t.f3, 0)) as 丙类支出from test_row2column t group by t.t1解决了,谢谢各位了
这个题目考了无数个程序员