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

          主站蜘蛛池模板: 韶山市| 屯留县| 南平市| 公主岭市| 宜丰县| 宁明县| 黔西县| 磐安县| 永川市| 陈巴尔虎旗| 焦作市| 皋兰县| 桦南县| 醴陵市| 格尔木市| 平乡县| 安康市| 筠连县| 太康县| 老河口市| 合山市| 荆州市| 娄烦县| 酉阳| 桃园县| 百色市| 绍兴市| 垣曲县| 稻城县| 大港区| 南雄市| 娱乐| 衡阳县| 东乡族自治县| 岑巩县| 开化县| 筠连县| 亚东县| 西乌珠穆沁旗| 曲水县| 长治县|