posts - 23, comments - 6, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          SQL語句之普通行列轉換

          Posted on 2006-09-14 16:18 小傻 閱讀(289) 評論(0)  編輯  收藏 所屬分類: asp.net&c#

          SQL語句之普通行列轉換

          假設有張學生成績表(tb_rowtocol)如下
          Name Subject Result
          張三 語文  73
          張三 數學  83
          張三 物理  93
          李四 語文  74
          李四 數學  84
          李四 物理  94

          想變成
          姓名 語文 數學 物理
          張三 73  83  93
          李四 74  84  94

          declare @sql varchar(4000)
          set @sql = 'select Name as ' + '姓名'
          select @sql = @sql + ' , sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
          from (select distinct Subject from rowtocol) as a
          set @sql = @sql + ' from rowtocol group by name'
          exec(@sql)

          如果上述兩表互相換一下:即
          表名(cj)
          姓名 語文 數學 物理
          張三 73  83  93
          李四 74  84  94

          想變成

          Name Subject Result
          張三 語文  73
          張三 數學  83
          張三 物理  93
          李四 語文  74
          李四 數學  84
          李四 物理  94

          select 姓名 as Name,'語文' as Subject,語文 as Result from CJ union
          select 姓名 as Name,'數學' as Subject,數學 as Result from CJ union
          select 姓名 as Name,'物理' as Subject,物理 as Result from CJ
          order by 姓名 desc


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阿鲁科尔沁旗| 偃师市| 锡林郭勒盟| 蓬溪县| 齐齐哈尔市| 汉沽区| 仙居县| 商水县| 尉氏县| 潮州市| 德保县| 灵宝市| 乌兰浩特市| 七台河市| 林甸县| 车险| 吴川市| 福建省| 额济纳旗| 河西区| 久治县| 惠安县| 乐都县| 新沂市| 柏乡县| 建宁县| 永胜县| 旅游| 壶关县| 台前县| 南溪县| 若尔盖县| 莎车县| 阿荣旗| 宁安市| 门源| 永和县| 兴和县| 彰化县| 华蓥市| 湘乡市|