日期:2014-05-16  浏览次数:20679 次

二维显示百分比
代码如下:

declare @sql4 varchar(8000)
set @sql4='select ColorCode'
select @sql4=@sql4+',['+dd+']=Cast(sum(case Size  when '''+dd+''' then (ActualQty-OrderQty)/OrderQty  else 0 end) as Varchar(20))+''%''' 
from (select distinct dd=Size from #c) ss  Left Outer Join BSsizx on BSsizx.sizx=ss.dd Order by BSsizx.Seqno
set @sql4=@sql4+' ,Cast(4 As Varchar(1)) Status into ##a4 from #c group by ColorCode'
exec(@sql4)

希望可以显示如下效果:
红色        S        M          L
白色       5%      -6%    2.1%
但就是出错,请诸位不吝赐教,多谢了!
我用的是SQL2000。
------解决方案--------------------
引用:
Quote: 引用:

执行了,但是报错了:


消息 208,级别 16,状态 1,第 3 行
对象名 'BSsizx' 无效。

那个表是用来给尺码排序用的,你可以

set @sql='select ColorCode'
select @sql=@sql+',['+dd+']=Cast(sum(case Size  when '''+dd+''' then (OrderNoQty-ActualQty)/OrderNoQty else 0 end) as Varchar(10)+'%')' 
from (select distinct dd=size from #c) ss 
set @sql=@sql+' from #c group by ColorCode' 
exec(@sql)
这样就可以了。


哦,这个代码确实会报错。

我修改了一下:
declare @sql varchar(8000)

set @sql='select ColorCode'
select @sql=@sql+',['+dd+']=Cast(sum(case Size  when '''+dd+''' then (OrderNoQty-ActualQty)/OrderNoQty else 0 end) as Varchar(10))+''%''' 
from (select distinct dd=size from #c) ss 
set @sql=@sql+' from #c group by ColorCode' 


exec (@sql)


然后就不报错了。