blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

          --各合作機構自年初以來每周報告數量

           

          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 渠上月 閱讀(869) 評論(1)  編輯  收藏 所屬分類: sql (sqlServer)

          評論

          # re: 數據庫行轉列的算法 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)
          --交叉報表處理代碼頭
          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

          --拼接交叉報表處理尾部,并且執行拼接后的動態SQL語句
          EXEC(@s+N '
          FROM tb
          GROUP BY sn,process_id ')  回復  更多評論
            

          主站蜘蛛池模板: 浙江省| 巴塘县| 东源县| 五莲县| 邳州市| 达州市| 南宫市| 通山县| 拉萨市| 河池市| 册亨县| 博罗县| 鹤峰县| 江都市| 酉阳| 汝城县| 徐州市| 留坝县| 大安市| 新竹市| 夹江县| 禄劝| 博兴县| 肃北| 永春县| 昭通市| 广平县| 呼和浩特市| 玛纳斯县| 七台河市| 红安县| 平塘县| 错那县| 巴青县| 彭阳县| 博乐市| 延安市| 古丈县| 广东省| 阿拉善左旗| 天台县|