<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JBOSS 點滴

    豐豐的博客

    行列轉換 sqlserver

    忙忙停停花了兩天時間弄出來的,這這里與大家共享,這個存儲過程實現后,大伙就不用重復勞動啊!
    表1
    bill
    0001
    0002
    0003
    ....
    要根據表1得出結算如0001,0002,0003,......

    declare @num int,
            @sqls nvarchar(4000)
    set @sqls='select count(*) from tableName'
    exec(@sqls)
    --如何將exec執行結果放入變量中?

    declare @num int,
                   @sqls nvarchar(4000)
    set @sqls='select @a=count(*) from t_paystock_h '
    exec sp_executesql @sqls,N'@a int output',@num output
    select @num



    alter procedure usp_Tolineout
        @table varchar(50),
        @wherebill varchar(20),
        @orderbill varchar(20),
        @count_bill varchar(20),
        @bill_value varchar(20),
        @print_bill varchar(1000)
    as--Author fly
    begin
      -- @table 表名 @wherebill 查詢條件字段 @orderbill 排序字段 @count_bill 要統計的單號,也是要產生字符串的字段,@bill_value 單據號,@print_bill 得出的結果寫入哪個字段
      declare @cw_count int
      declare @i        int
      declare @sql      nvarchar(4000),
              @sql2     nvarchar(4000),
              @str_bill nvarchar(4000)
             
         set @i=1
         set @cw_count=1
         set @sql = N'select   @count = count(distinct '+@count_bill+')   from  '+@table+' where '+@wherebill+'='+''''+@bill_value+''''+''
         exec sp_executesql @sql,N'@count int output',@cw_count output
      
      while (@i<=@cw_count)
       begin
           set @sql2 = N'select top 1 @strbill=isnull(convert(varchar(100),@strbill),'''')+case isnull(@strbill,'''') when ''''  then '''' else '','' end +convert(varchar(30),'+@count_bill+') from
                       (select top '+convert(varchar(10),@i,126)+' '+@count_bill+','+@wherebill+' from '+@table+' where bill='''+@bill_value+''' order by '+@orderbill+' desc) a
                          where '+@wherebill+'='''+@bill_value+''' order by  '+@orderbill+' asc'
         
           exec sp_executesql @sql2,N'@strbill varchar(500) output',@str_bill output
         
           set @i=@i+1
       end /***/
      print '結果為:'+@str_bill
    end


    網上轉載一例:
    create table tb(truename varchar(20),shuxue int,yuwen int,yinyu int)
    insert tb select
    '張三',   100 ,80, 80  union all select
    '李四',   90 ,90 ,60  union all select
    '王五',   59, 80 ,44

    select truename,fz=shuxue+yuwen+yinyu ,1 as id into #t
    from tb

    declare @s varchar(4000)
    select @s=isnull(@s+',','')+'max(case when truename='''+truename+''' then fz else 0 end) ['+truename+']'
    from #t
    set @s='select id,'+@s+' from #t group by id'

    exec(@s)

    id          張三          李四          王五
    ----------- ----------- ----------- -----------
    1           260         240         183

    (
    1 行受影響)
    drop table tb
    drop table #t

    posted on 2009-04-22 16:31 半導體 閱讀(355) 評論(1)  編輯  收藏 所屬分類: sqlserver

    評論

    # re: 行列轉換 sqlserver 2012-09-06 18:18 鄧鵬

    S_LabName S_LabMeno
    小麥 星耀
    我想改成這樣:
    S_LabName 小麥
    S_LabMeno 星耀  回復  更多評論   

    主站蜘蛛池模板: 最近免费中文字幕4| 国产99视频精品免费专区| 日本牲交大片免费观看| 亚洲一区二区三区在线网站| 69免费视频大片| 亚洲色av性色在线观无码| 最近中文字幕电影大全免费版 | 噼里啪啦电影在线观看免费高清| 91亚洲国产成人久久精品| 99久久久国产精品免费无卡顿| 天堂亚洲国产中文在线| 午夜爱爱免费视频| 国产成人综合亚洲| 亚洲自偷自偷图片| 久久精品电影免费动漫| 亚洲中文字幕久在线| 浮力影院第一页小视频国产在线观看免费| jizzjizz亚洲日本少妇| 亚洲精品无码专区2| 成人无码a级毛片免费| 亚洲视频免费在线播放| 在线观看免费污视频| 污污免费在线观看| 亚洲va中文字幕无码久久不卡| 久久精品人成免费| 亚洲欧美国产国产综合一区 | 亚洲熟女少妇一区二区| 精品一卡2卡三卡4卡免费视频| 亚洲网址在线观看你懂的| 色影音免费色资源| 成人亚洲国产精品久久| 亚洲AV无码久久精品成人| 亚洲欧洲免费无码| 一区二区三区精品高清视频免费在线播放 | 国产精品免费大片| 亚洲综合一区无码精品| 亚洲熟伦熟女新五十路熟妇 | 在线看片人成视频免费无遮挡| 最新久久免费视频| 亚洲午夜精品一区二区麻豆| 亚洲人成在线播放网站|