行 ptd_no Qty Name dsc_rem
1 10 货号 F100
1 10 客号 B100
2 20 货号 C100
2 20 客号 D100想达到的效果
prd_no qty name dsc_rem 字段名随便 F1 F2 F2也行
第一行 订单号 数量 客号 货号 注前两个"订单号" "数量" 名称可以固定 后面的就要字
第二行 1 10 B100 F100 段NAME 里取
第三行 2 20 D100 C100 求那个大侠帮帮忙 急啊,
1 10 货号 F100
1 10 客号 B100
2 20 货号 C100
2 20 客号 D100想达到的效果
prd_no qty name dsc_rem 字段名随便 F1 F2 F2也行
第一行 订单号 数量 客号 货号 注前两个"订单号" "数量" 名称可以固定 后面的就要字
第二行 1 10 B100 F100 段NAME 里取
第三行 2 20 D100 C100 求那个大侠帮帮忙 急啊,
假设有张学生成绩表(tb_rowtocol)如下
Name Subject Result
张三 语文 73
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94想变成
姓名 语文 数学 物理
张三 73 83 93
李四 74 84 94declare @sql varchar(4000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from rowtocol) as a
set @sql = @sql + ' from rowtocol group by name'
exec(@sql)
如果上述两表互相换一下:即
表名(cj)
姓名 语文 数学 物理
张三 73 83 93
李四 74 84 94想变成 Name Subject Result
张三 语文 73
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94select 姓名 as Name,'语文' as Subject,语文 as Result from CJ union
select 姓名 as Name,'数学' as Subject,数学 as Result from CJ union
select 姓名 as Name,'物理' as Subject,物理 as Result from CJ
order by 姓名 desc
可是我的意思是 字段名,什么名称都可以
只是第一行,写入的数据是 字段名,
例 字段名 prd_no qty name dsc_rem
第一行 订单号 数量 客号 货号
到第二行才是你说的开始行转列的数据 这个能做到吗?谢谢了
select 'prd_no','qty','name','dsc_rem' from 临时表再将整个记录 insert 到表里面就好.
select 1 as ptd_no, 10 as Qty, '货号' as [Name], 'F100' as dsc_rem
into test
union select 1, 10, '客号', 'B100'
union select 2, 20, '货号', 'C100'
union select 2, 20, '客号', 'D100'
--------------------------------------------
declare @s varchar(800)
set @s = 'select * from (select ''订单号'' as ptd_no, ''数量'' as Qty'
select @s = @s + ', ''' + a.[Name] + ''' as ' + a.[Name]
from (select distinct [name] from test) a
set @s = @s + ' union select cast(ptd_no as varchar), cast(Qty as varchar)'
select @s = @s + ', min(case [name] when ''' + a.[Name]
+ ''' then dsc_rem end)'
from (select distinct [name] from test) a
set @s = @s + ' from test group by ptd_no, Qty) a '
+ 'order by case isnumeric(ptd_no) when 1 then ptd_no else 0 end'
exec(@s)
/*
ptd_no Qty 货号 客号
------------------------------ ------------------------------ ---- ----
订单号 数量 货号 客号
1 10 F100 B100
2 20 C100 D100*/
--------------------------------------------
drop table test
后来我修改到8000还是不行,
不知道是不是因为设置的@S 不够长啊,