SQL语句中怎么把列的值横向显示,因为列的值是动态的.customernane salesamont monthtext
aaa 1000 1
bbb 1000 1
ccc 1000 1
我要得到结果为:
customername total
monthtext aaa bbb ccc
1 1000 1000 1000 3000但我的customername的值可能还有其他的.怎么写sql语句.
aaa 1000 1
bbb 1000 1
ccc 1000 1
我要得到结果为:
customername total
monthtext aaa bbb ccc
1 1000 1000 1000 3000但我的customername的值可能还有其他的.怎么写sql语句.
解决方案 »
- 频繁的调用select大表的Function,比起直接包在sql中select,效能如何?
- 两个关于oracle的问题,非常简单,但是我是菜鸟
- C++下Oracle数据库开发的问题(OTL)
- 200分相送,求一个 关于朋友关系 的数据库的设计
- 请教各位大师,Oracle9i 如何只显示当天的记录?
- ●为什么这里不能用COMMIT?(CURSOR...FOR UPDATE...的循环中)
- 请验证你输入manager server hostname的正确主机名和状态?
- oracle 7.3.2 在UNIX下安装的问题
- 将一个用户的数据移到另一个表空间上,出现一些奇怪的问题!
- win10家庭版是不是不能用oracle
- {急}oracle 中的外连接问题
- 关于alter session的问题,在线急等……
没有其他办法!
http://blog.163.com/lzfhope/blog/static/6363992200921261358940/
declare
sqlstr varchar2(2000):='select monthtext';
sqlstr1 varchar2(1000);
begin
for cur1 in (select distinct customername from t)
loop
sqlstr:=sqlstr||'
,max(decode(customername,'''||cur1.customername||''',salesamont))'||cur1.customername;
sqlstr1:=sqlstr1||'+nvl('||cur1.customername||',0)';
end loop;
sqlstr:='select t1.*,'||ltrim(sqlstr1,'+')||'total from(
'||sqlstr||'
from t
group by monthtext)t1';
dbms_output.put_line(sqlstr);
end;