汇总后的结果:表名为CityReport 
行业名称 |  所属地 |  数量|   资金|  人数
---------|------------|-------|--------|--------   
纺织   |  海淀区  | 1  |  467 |    9 
         |------------------- 
         |   朝阳区  | 4  |  599  |    3
         |-------------------
         |   ...      |   ... |   ...  |   ...
---------|------------|-------|--------|--------
合计     |            |    5  |  1066  |    12
---------|------------|-------|--------|--------
包装     |   昌平区   |    4  |   656  |     8
         |-------------------
         |   海淀区   |    3  |   111  |     3
         |-------------------
         |   朝阳区   |    3  |   333  |     3
         |-------------------
         |   ...      |   ... |   ...  |   ...
---------|------------|-------|--------|--------
合计     |            |    10 |   1100 |    14
---------|------------|-------|--------|--------
...      |   ...      |   ... |   ...  |   ...先按“行业名称”汇总,再按“所属地”汇总,对选择的字段累计求和!

解决方案 »

  1.   


    select 行业名称,sum(数量),sum(资金),sum(人数) from 表 group by 行业名称select 所属地,sum(数量),sum(资金),sum(人数) from 表 group by 所属地
      

  2.   

    select 行业名称,sum(数量) num1,sum(资金) num 2,sum(人数) num3 from 表 group by 行业名称union allselect 所属地,sum(数量) num1,sum(资金) num2,sum(人数) num3 from 表 group by 所属地
      

  3.   

    创建表的代码
    USE [Richamp_gcjdb]
    GO
    /****** 对象:  Table [dbo].[Test]    脚本日期: 09/28/2007 09:59:32 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Test](
    [id] [int] NOT NULL,
    [行业名称] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [所属地] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [数量] [int] NULL,
    [资金] [float] NULL,
    [人数] [int] NULL,
     CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED 
    (
    [id] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]
      

  4.   

    我现在写到了这种程序,但是离表的结构还有一点区别,求高人指点:SELECT CASE WHEN (GROUPING(行业名称) = 1) THEN '合计' 
                ELSE ISNULL(行业名称, 'UNKNOWN') 
           END AS 行业名称, 
           CASE WHEN (GROUPING(所属地) = 1) THEN '' 
                ELSE ISNULL(所属地, 'UNKNOWN') 
           END AS 所属地, 
           sum(数量)as 数量,sum(资金)as 资金,sum(人数)as 人数
    FROM Test 
    GROUP BY 行业名称, 所属地 WITH ROLLUP
      

  5.   

    这个格式应该可以实现:select 行业名称,所属地,数量,资金,人数 from table  
    union
    select 小计,' ',sum(数量),sum(资金),sum(人数)from table  
    group by 行业名称,所属地
      

  6.   

    现在基本做出来了:
    SELECT CASE WHEN (grouping(行业名称) = 1) THEN '总计' 
                ELSE isnull(行业名称, 'unknown') 
           END AS 行业名称, 
           CASE WHEN (grouping(所属地) = 1) THEN '小计' 
                ELSE isnull(所属地, 'unknown') 
           END AS 所属地, 
          
           sum(数量)as 数量,sum(资金)as 资金
            ,级别=(case when grouping(所属地)=1 then '' else cast('' as varchar) end)
    ,sum(人数)as 人数
    ,时间=(case when grouping(所属地)=1 then '' else cast('' as varchar) end)
    FROM  Test 
    GROUP BY 行业名称, 所属地 WITH ROLLUP order by 行业名称,数量有一个问题:我在表里加了一个“时间”字段,如果以时间字段做为第一级汇总,会报:从字符串向 datetime 转换时失败。这时应该怎么修改呢?