zoukankan      html  css  js  c++  java
  • 竖变横表存储过程(万能型)

    ----------------------------------竖变横xxx -----------------------------------------------------
    --总的来说 还有些问题待解决,请大家帮忙完善
    -- exec 竖变横xxx 'job_desc','jobs'
    --原理就是这个啦
    select  
    'Editor'= count(case job_desc when 'Editor' then job_desc  end ),
    'yyyy'= count(case job_desc when 'yyyy' then  job_desc end ),
    'Designer'= count( case job_desc when 'Designer' then  job_desc end)
    from jobs
    ------------------------------------------
    drop Proc 竖变横2
    create Proc 竖变横2
    (
    @分组列名 nvarchar(130),
    @分组表名 nvarchar(130)
    )
    as
    declare @cursorSqlStr nvarchar(1000)
    set @cursorSqlStr= 'declare cursorTest cursor for select distinct '+@分组列名+'  from '+ @分组表名
    exec (@cursorSqlStr)
    open cursorTest
    declare @Test nvarchar(50),@Test2 nvarchar(50),@sqlStr nvarchar(4000)
    set @sqlStr = ' select '
    fetch  cursorTest  into @Test
    while @@fetch_status =0
    begin
    set @Test2 =replace(@Test,' ','')
    set @Test2 =replace(@Test2,'-','')
    set @sqlStr = @sqlStr+''''+@Test2+' '''+ '=count(case '+@分组列名+' when '''+@Test+''' then '+@分组列名+'  end) '
    fetch  cursorTest  into @Test
     set @sqlStr = @sqlStr+','
    end
    set @sqlStr =substring(@sqlStr,0,len(@sqlStr)-1)+  ' from  ' +@分组表名
    close cursorTest
    DEALLOCATE cursorTest
    exec  (@sqlStr)

  • 相关阅读:
    C++中智能指针的设计和使用
    [转]C++ 智能指针详解
    C++ const 常量和常指针
    深入理解C++中的mutable关键字
    C++ 静态常量
    BZOJ 1875: [SDOI2009]HH去散步
    BZOJ 1024: [SCOI2009]生日快乐
    BZOJ 1059: [ZJOI2007]矩阵游戏
    bzoj 1833: [ZJOI2010]count 数字计数
    LUOGU P2587 [ZJOI2008]泡泡堂
  • 原文地址:https://www.cnblogs.com/jacd/p/1551783.html
Copyright © 2011-2022 走看看