日期:2014-05-17  浏览次数:20516 次

行列转换遇到的问题
数据库有张表名为"生产订单计划";数据内容大概如下:
客户编码(关键字)  铸件号    进度1 进度2 进度3 进度4 ……
RFC010141      2402C-A         20   30    31   33           
RFC010142      2802D-XX        40   0     37   56             
RFC010154      3333Z-3E        50   9     45   50   
我在做行列转换查询时,语句如下:
declare @n int
set @n=1
select 铸件号,客户编码,进度 = '进度1' , 进度值 = '进度'+convert(varchar(10),@n) from 生产订单计划

结果出现的是
铸件号     客户编码    进度    进度值
2402C-A    RFC010141   进度1   进度1
……………………………………… 进度1
………………………………       进度1
也就是进度值哪里显示的是“进度1”几个字 而不是我要的 20,40,50这几个值,因为表中进度有很多不是只有到进度4就结束了,后面还有进度5,进度6…………进度31 我省略了,所以我在转换时想用个变量来
       

------解决方案--------------------
这个是动态语句:

create table 生产订单计划
(
客户编码 varchar(10), 
铸件号 varchar(20),    
进度1 int,
进度2 int, 
进度3 int, 
进度4 int
)

insert into 生产订单计划
select 'RFC010141'  ,    '2402C-A',         20 ,  30   , 31,33           
union all select 'RFC010142' ,     '2802D-XX',        40 ,  0    , 37  , 56             
union all select 'RFC010154' ,     '3333Z-3E',        50 ,  9  ,   45  , 50  
go



declare @sql nvarchar(4000)

set @sql = ''

select @sql = @sql + ',['+name+']'
from syscolumns
where id = OBJECT_ID('生产订单计划')
      and name like '进度%'
order by colid


set @sql = 'select 铸件号,客户编码,进度,进度值
from&n