blog.Toby

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評(píng)論 :: 0 Trackbacks

          --各合作機(jī)構(gòu)自年初以來每周報(bào)告數(shù)量

           

          select  b.f0010 jg,datepart(ww,a.creat_tm) zc,count(*) cnt into #t

           

          from RPT_D_BSC a,RPT_R_ORG b

           

          where b.f0040='4' and a.creat_tm>'2007-01-01' and a.org_cl=b.org_cl

           

          group by b.f0010,datepart(ww,a.creat_tm)

           

          order by b.f0010,datepart(ww,a.creat_tm)

           

          declare @sql varchar(8000)

           

          set @sql = 'select jg as ' + '姓名'

           

          select @sql = @sql + ', isnull(sum(case zc when ''' + cast(zc as varchar(2)) + ''' then cnt end),0) [' + cast(zc as varchar(2)) + ']'

          from (select distinct zc from #t) as a

          order by zc


          set @sql = @sql + 'from #t group by jg order by jg'

          --print @sql 

          exec(@sql)

          posted on 2007-08-14 14:53 渠上月 閱讀(877) 評(píng)論(1)  編輯  收藏 所屬分類: sql (sqlServer)

          評(píng)論

          # re: 數(shù)據(jù)庫(kù)行轉(zhuǎn)列的算法 2007-11-19 10:24 toby
          CREATE TABLE tb(sn varchar(20),process_id int,data_id int,measuredata numeric(9,2))
          INSERT tb SELECT '12770006 ',1,1,1.34
          UNION ALL SELECT '12770006 ',1,2,046
          UNION ALL SELECT '12770006 ',1,3,9.82
          UNION ALL SELECT '14061916 ',2,1,5.5
          UNION ALL SELECT '14061916 ',2,2,4.36
          UNION ALL SELECT '12770006 ',2,1,6.43
          UNION ALL SELECT '12770006 ',2,2,0.12
          UNION ALL SELECT '12770006 ',2,3,6.37
          UNION ALL SELECT '14061916 ',3,1,3.4
          UNION ALL SELECT '14061916 ',3,2,1.1

          --查詢處理
          DECLARE @s nvarchar(4000)
          --交叉報(bào)表處理代碼頭
          SET @s= 'SELECT sn,process_id '
          --生成列記錄水平顯示的處理代碼拼接(處理Item列)
          SELECT @s=@s
          + ', '+QUOTENAME(data_id)
          +N '=SUM(CASE data_id WHEN '+QUOTENAME(data_id,N ' ' ' ')
          +N ' THEN measuredata END) '
          FROM tb
          GROUP BY data_id

          --拼接交叉報(bào)表處理尾部,并且執(zhí)行拼接后的動(dòng)態(tài)SQL語(yǔ)句
          EXEC(@s+N '
          FROM tb
          GROUP BY sn,process_id ')  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 宜君县| 新和县| 德江县| 黄龙县| 布拖县| 祁东县| 临猗县| 尤溪县| 噶尔县| 油尖旺区| 新干县| 昌宁县| 平凉市| 泸水县| 措美县| 玉溪市| 郓城县| 昌邑市| 乌拉特后旗| 桦川县| 辉县市| 鹿泉市| 雷波县| 福州市| 托里县| 绥阳县| 永川市| 新乡市| 黎平县| 哈尔滨市| 江安县| 喀喇沁旗| 西平县| 宜良县| 武强县| 泰来县| 宜州市| 荔浦县| 盐津县| 泸定县| 沅江市|