求行转列,实现给分

96pp 2004-08-09 10:44:14
COL1 COL2 COL3
-----------------------
表里面得内容为:
COL1 COL2 COL3
-----------------------
A 1 125
A 2 250
A 3 330
A 4 440
.......
现在要显示为
COL1 COL2 COL3 COL4 COL5 .....
--------------------------------------------
A 1 2 3 4 .....
A 125 250 330 440 .....
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2004-08-10
  • 打赏
  • 举报
回复
create table atest
(物资 varchar(10),
金额 int,
单位 varchar(10)
)

insert atest
select 'AAA',111,'DW1'
UNION
select 'BBB',222,'DW2'
UNION
select 'CCC',333,'DW3'
UNION
select 'DDD',444,'DW4'


declare @sql varchar(8000)

set @sql = 'select 物资, '



select @sql = @sql + 'sum(case 单位 when '''+单位+'''

then 金额 else 0 end) as '''+单位+''','

from (select distinct 单位 from atest) as a



select @sql = left(@sql,len(@sql)-1) + ' from atest group by 物资'

exec(@sql)

go

以上语句在查询分析器中通过.

你只要把以下部分做成存储过程,在DW中使用这个SP作为数据源即可

declare @sql varchar(8000)

set @sql = 'select 物资, '



select @sql = @sql + 'sum(case 单位 when '''+单位+'''

then 金额 else 0 end) as '''+单位+''','

from (select distinct 单位 from atest) as a



select @sql = left(@sql,len(@sql)-1) + ' from atest group by 物资'

exec(@sql)

old_brother 2004-08-10
  • 打赏
  • 举报
回复
数据结构问题,考虑一下使用数组实现。
96pp 2004-08-10
  • 打赏
  • 举报
回复
用sql语句怎么实现?
amekoxiao 2004-08-09
  • 打赏
  • 举报
回复
crosstab
sywen 2004-08-09
  • 打赏
  • 举报
回复
最簡單的方法,用用crosstab格式
kirao 2004-08-09
  • 打赏
  • 举报
回复
用crosstab作報表變可,也可寫sql作行轉列(sql 遞歸方法)!!
lzheng2001 2004-08-09
  • 打赏
  • 举报
回复
CROSSTAB的数据窗口:
行: COL1
列: COL2
data: COL3
qianfl 2004-08-09
  • 打赏
  • 举报
回复
用CROSSTAB的数据窗口
klbt 2004-08-09
  • 打赏
  • 举报
回复
问题不太明确。
可以动态创建列,然后转置dw_1.setitem(i,j,dw_1.getitemstring(j,i+1))

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧