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

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

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

    失樂(lè)園

    技術(shù)之路

    BlogJava 聯(lián)系 聚合 管理
      19 Posts :: 44 Stories :: 40 Comments :: 0 Trackbacks

    SQL中如何把列中的行轉(zhuǎn)換成列

    2010-11-22 01:50

    SQL code/*
    普通行列轉(zhuǎn)換

    假設(shè)有張學(xué)生成績(jī)表(tb)如下:
    Name Subject Result
    張三 語(yǔ)文  74
    張三 數(shù)學(xué)  83
    張三 物理  93
    李四 語(yǔ)文  74
    李四 數(shù)學(xué)  84
    李四 物理  94
    */

    -------------------------------------------------------------------------
    /*
    想變成
    姓名       語(yǔ)文        數(shù)學(xué)        物理      
    ---------- ----------- ----------- -----------
    李四       74       84       94
    張三       74       83       93
    */

    create table tb
    (
    Name varchar(10) ,
    Subject varchar(10) ,
    Result   int
    )

    insert into tb(Name , Subject , Result) values('
    張三' , '語(yǔ)文' , 74)
    insert into tb(Name , Subject , Result) values('
    張三' , '數(shù)學(xué)' , 83)
    insert into tb(Name , Subject , Result) values('
    張三' , '物理' , 93)
    insert into tb(Name , Subject , Result) values('
    李四' , '語(yǔ)文' , 74)
    insert into tb(Name , Subject , Result) values('
    李四' , '數(shù)學(xué)' , 84)
    insert into tb(Name , Subject , Result) values('
    李四' , '物理' , 94)
    go

    --
    靜態(tài)SQL,指subject只有語(yǔ)文、數(shù)學(xué)、物理這三門課程。
    select name
    姓名,
       max(case subject when '
    語(yǔ)文' then result else 0 end) 語(yǔ)文,
       max(case subject when '
    數(shù)學(xué)' then result else 0 end) 數(shù)學(xué),
       max(case subject when '
    物理' then result else 0 end) 物理
    from tb
    group by name
    /*
    姓名       語(yǔ)文        數(shù)學(xué)        物理      
    ---------- ----------- ----------- -----------
    李四       74       84       94
    張三       74       83       93
    */

    --
    動(dòng)態(tài)SQL,指subject不止語(yǔ)文、數(shù)學(xué)、物理這三門課程。
    declare @sql varchar(8000)
    set @sql = 'select Name as ' + '
    姓名'
    select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
    from (select distinct Subject from tb) as a
    set @sql = @sql + ' from tb group by name'
    exec(@sql)

     

    posted on 2011-09-14 17:23 狄浩 閱讀(443) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲www77777| 亚洲国产精品日韩在线| 国产精品亚洲天堂| 全免费一级午夜毛片| 亚洲精品无码久久久久APP| 男人的好免费观看在线视频| 亚洲综合av一区二区三区不卡| 亚洲春色在线观看| 四虎免费影院ww4164h| 亚洲综合久久1区2区3区| 91精品免费在线观看| 久久亚洲最大成人网4438| 在线视频免费观看www动漫| 亚洲国产精品18久久久久久 | 亚洲欧美一区二区三区日产| 在线中文高清资源免费观看| 国产精品成人亚洲| 亚洲精品国产精品乱码不卡√| 国产一级淫片a免费播放口| 久久精品国产亚洲av水果派| 999久久久免费精品国产| 亚洲国产成人精品无码区二本| 亚洲免费一区二区| 99热在线免费观看| 亚洲色欲色欲www在线播放| 亚洲国产精品无码久久青草| 免费观看一区二区三区| 亚洲午夜久久久久久尤物| 国产精品极品美女免费观看| 两个人看的www视频免费完整版| 亚洲视频国产视频| 无码国模国产在线观看免费| 国产午夜精品理论片免费观看| 亚洲一区动漫卡通在线播放| 婷婷亚洲天堂影院| 91高清免费国产自产拍2021| 久久精品亚洲日本波多野结衣| 国产亚洲成av人片在线观看| 欧美大尺寸SUV免费| 中文字幕成人免费高清在线视频| 久久精品国产亚洲av麻豆蜜芽|