把你那个存储过程的结果先插入一个临时表或者表也可以,然后再从表里SELECT就可以了啊
create table a................按照你的存储过程的结果的字段建立表
insert into a exec(@s)
select 项目,百分比=case when ...........再用行列转换,用实际/标准就可以了啊

解决方案 »

  1.   

    netcup(茶杯) ,不是吧?我是动态的如何建临时表呀?
      

  2.   

    那你这个是要对存储过程的结果进行再处理啊.得先把存储过程的结果插入到表里,然后再对这个表用SELECT 行列装换啊.我是这样想的,是不是没理解你的意思?
      

  3.   

    请LZ将你的@s打印出来看一下.你这样贴出来,看都看不明白.没有你的环境,不知道你的表
    都在干什么,很难帮你写.至少你先贴出你的@s来让大家看明白,你的程序在做什么吧?
      

  4.   

    谢谢各位:
    表   erp_vwicbill_2
    入库单号 生产车间 工段 入库日期   物料编码 单位 数量
    cin0001  五金车间 开料 2006-11-01  0001     条   10
    cin0001  五金车间 开料 2006-11-01  0002     条   20
    cin0002  五金车间 开料 2006-11-02  0001     条   5
    cin0002  五金车间 开料 2006-11-02  0001     条   10
    表   t_icitemstandard
    物料编码 标准工时
    0001      0.1
    0002      0.2
    表   erp_workshoptime
      日期      生产车间 工段 实际总工时
    2006-11-01  五金车间 开料   6
    2006-11-02  五金车间 开料   6我想得到的结果是(列是动态的,日期,生产车间,工段为变量)
        日期       2006-11-01 2006-11-02
    五金开料效率     83.3%       25%
      

  5.   

    --处理相关的参数select 日期,生产车间,工段,实际总工时,000 As 标准总工时 
    Into #tmpShopTime
    From erp_workshoptime 
    Where 1=0With 
    Tmp1 As 
    (
    Select A* ,A数量*B.标准工时 As 总标准工时
    From erp_vwicbill_2 As A Left Outer Join t_icitemstandard As b
         On A.物料编码 = B.物料编码
    )
    Insert Into #tmpShopTime
    Select 日期,生产车间,工段,实际总工时,000 As 标准总工时 From erp_workshoptime
    Union All 
    Select 日期,生产车间,工段,000 As 实际总工时,Sum(总标准工时) As 标准总工时
    From Tmp1 
    With Tmp2 As 
    (
    Select 日期,生产车间,工段,Sum(实际总工时) As 实际总工时,Sum(标准总工时) As 标准总工时
    From #tmpShopTime
    Group By 日期,生产车间,工段
    )
    Select 日期,生产车间,工段,Cast((标准总工时*100.00/实际总工时) As VarChar(10))+'%' As 五金开料效率
    Into #tmpResult
    From Tmp2--根据你的要求来.这里应该可以使用以下:
    --============================================
    Select 日期,Cast((Sum(标准总工时)*100.00/Sum(实际总工时)) As VarChar(10))+'%' As 五金开料效率
    Into #tmpResult
    From Tmp2
    Group By 日期
    --============================================-- 现在交叉表  
    -- 若使用PIVOT 数据库的兼容级别必须设置为90,可使用使用sp_dbcmptlevel, 若使用Case 也可以完成.-- 此方面的例子网上不少,搜索交叉表在利用你的数据综合一下就得到你所要的结果了.-- 完成任务.删除相关表
    Drop Table #tmpShopTime
    Drop Table #tmpResult
      

  6.   

    with temp1 as select 这是建一个数据集吗,是mssql吗
      

  7.   

    这是MS-SQL 2005中的新功能.包括PIVOT都是2005中的.使用起来相当方便.
    当然你也可以在2000中,采用另外的一种方式:Insert Into #tmpShopTime
    Select 日期,生产车间,工段,实际总工时,000 As 标准总工时 From erp_workshoptime
    Union All 
    Select 日期,生产车间,工段,000 As 实际总工时,Sum(总标准工时) As 标准总工时
    From
    (
    Select A* ,A数量*B.标准工时 As 总标准工时
    From erp_vwicbill_2 As A Left Outer Join t_icitemstandard As b
         On A.物料编码 = B.物料编码
    ) As Tmp1因此,当然是MSSQL ^_^