行转列语句sql请教

[复制链接]
查看11 | 回复5 | 2012-7-30 15:04:15 | 显示全部楼层 |阅读模式
机构编码时间开销
类别
1
9月
10
A
2
9月
20
A
3
9月
30
A
1
9月
11
B
2
9月
21
B
3
9月
31
B
1 10月
110
A
2 10月
120
A
3 10月
130
A
1 10月
111
B
2 10月
121
B
3 10月
131
B

现在想转换成这样
机构码时间 A
B
1
9月
10
11
2
9月
20
21
3
9月
30
31
1 10月 110
111
2 10月
120
121
3 10月
130
131

表名分别叫 cost_a,cost_b就好了

回复

使用道具 举报

千问 | 2012-7-30 15:04:15 | 显示全部楼层
try!
select agentno,

dt,

sum(decode(type, 'A', cost, 0)) a,

sum(decode(type, 'B', cost, 0)) b
from t
group by agentno, dt
order by dt, agentno;

回复

使用道具 举报

千问 | 2012-7-30 15:04:15 | 显示全部楼层
bell6248 发表于 2012-11-13 20:41
try!
select agentno,

谢谢回复,主要我这个A,B类别是有不定个数的,也许会有很多,但是我不能一个个手写字段,我记得有个model子句的,能帮忙指点一下吗?
回复

使用道具 举报

千问 | 2012-7-30 15:04:15 | 显示全部楼层
晕逍遥 发表于 2012-11-13 23:33
谢谢回复,主要我这个A,B类别是有不定个数的,也许会有很多,但是我不能一个个手写字段,我记得有个model ...

不定列数的只能用动态SQL。静态的会写了,动态的也能用同样道理拼出来。
回复

使用道具 举报

千问 | 2012-7-30 15:04:15 | 显示全部楼层
楼上两位的指点够明确了,楼主善用搜索,这类问题之前已经数不清有多少人问过了
回复

使用道具 举报

千问 | 2012-7-30 15:04:15 | 显示全部楼层
楼主试试这个:select distinct c_id,
c_date,
min(c_pay) over(partition by c_id, c_date order by c_date, c_id) A,
max(c_pay) over(partition by c_id, c_date order by c_date,c_id) B
from cost_a
group by c_pay, c_id, c_date order by c_date desc 希望对你有所帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行