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 渠上月 閱讀(870) 評論(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 ')  回復  更多評論
            

          主站蜘蛛池模板: 旺苍县| 繁峙县| 甘德县| 正阳县| 和平县| 牙克石市| 张家口市| 澄迈县| 屏山县| 静安区| 乌拉特前旗| 板桥市| 颍上县| 大港区| 平安县| 老河口市| 昌平区| 环江| 宜黄县| 汉沽区| 江西省| 大兴区| 五家渠市| 增城市| 宜川县| 九江市| 淮阳县| 玛多县| 蒙山县| 若羌县| 县级市| 永宁县| 武隆县| 西吉县| 盱眙县| 密山市| 门源| 会泽县| 辉县市| 五大连池市| 五台县|