idx        类别                   数量                             金额          
----------- -------------------------------------------------- ----------- 
1          asp                   1                              
1          asp                                                15 
3          php                   1                            8 
4          sql                   1                            22 有这样的一个表我怎么样用SQL命令才能合并成下面这样呢 
idx        类别                   数量                             金额          
----------- -------------------------------------------------- ----------- 
1          asp                   1                            15  
2          php                   1                            8 
3          sql                   1                            22 有劳高手赐教,谢谢。

解决方案 »

  1.   

    SELECT idx,类别,MAX(数量) AS 数量,
           MAX(金额) AS 金额
    FROM tb_name
    GROUP BY idx;
      

  2.   

    GROUP BY 漏了个类别SELECT idx,类别,MAX(数量) AS 数量,
           MAX(金额) AS 金额
    FROM tb_name
    GROUP BY idx,类别;
      

  3.   

    --> liangCK小梁 于2008-10-08
    --> 生成测试数据: #T
    IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
    CREATE TABLE #T (idx INT,类别 VARCHAR(3),数量 INT,金额 INT)
    INSERT INTO #T
    SELECT '1','asp','1',null UNION ALL
    SELECT '1','asp',null,'15' UNION ALL
    SELECT '3','php','1','8' UNION ALL
    SELECT '4','sql','1','22'--SQL查询如下:SELECT idx,类别,MAX(数量) AS 数量,
           MAX(金额) AS 金额
    FROM #T
    GROUP BY idx,类别;/*
    idx         类别   数量          金额
    ----------- ---- ----------- -----------
    1           asp  1           15
    3           php  1           8
    4           sql  1           22(3 行受影响)
    */
      

  4.   

    SELECT idx,类别,MAX(数量) AS 数量,MAX(金额) AS 金额 FROM 表名 GROUP BY idx,类别是这样吗?
      

  5.   

    Access?SELECT idx,类别,MAX(数量) AS 数量1,MAX(金额) AS 金额1 FROM 表名 GROUP BY idx,类别 
      

  6.   

    是ACCESS的,刚试了你这句,还是不行呀。出来是这样的。idx 类别 数量1 金额1
    2 asp 1
    3 asp 15
    4 php 1 8
    5 sql 1 22
      

  7.   

    是ACCESS的,刚试了你这句,还是不行呀。出来是这样的。idx        类别                  数量1                            金额1          
    ----------- -------------------------------------------------- ----------- 
    1          asp                  1                              
    1          asp                                               15 
    3          php                  1                            8 
    4          sql                  1                            22 
      

  8.   


    IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
    CREATE TABLE #T (idx INT,类别 VARCHAR(3),数量 INT,金额 INT)
    INSERT INTO #T
    SELECT '1','asp','1',null UNION ALL
    SELECT '1','asp',null,'15' UNION ALL
    SELECT '3','php','1','8' UNION ALL
    SELECT '4','sql','1','22'
    Select idx ,类别,SUM(ISNULL(数量,0))数量,SUM(ISNULL(金额,0))金额 From #T
    Group  By idx ,类别
    这个样不行?
    ACCESS中,你把ISNULL替换成IIF和ISNULL,因为ISNULL在ACCESS中只有一个参数!
      

  9.   


    用别名改为
    SELECT idx,类别,MAX(数量) AS 数量2,
           MAX(金额) AS 金额2
    FROM #T
    GROUP BY idx,类别;Access别名与列名不可重名
      

  10.   

    to:15楼这样用改为
    sum(iif(isnull(数量)=0,数量,0)) 数量2
      

  11.   

    Select idx,类别,sum(iif(isnull(数量)=0,数量,0)) 数量2,sum(iif(isnull(金额)=0,金额,0)) 金额2 From 表名 Group  By idx ,类别我这样执行,提示语法错误,还请各位再帮帮呀。
      

  12.   

    sum(iif(isnull(数量)=0,数量,0)) as 数量2--加上as
      

  13.   

    19楼的朋友,你的语句不行呀,执行:
    Select idx,类别,sum(iif(isnull(数量)=0,数量,0)) as 数量2,sum(iif(isnull(金额)=0,金额,0)) as 金额2 From 表名 Group  By idx ,类别出来的是这样的:idx        类别                  数量                            金额          
    ----------- -------------------------------------------------- ----------- 
    1          asp                  1                            0  
    1          asp                  0                            15 
    3          php                  1                            8 
    4          sql                  1                            22 
      

  14.   

    我要的结果是这样的:idx        类别                  数量                            金额          
    ----------- -------------------------------------------------- ----------- 
    1          asp                  1                            15  
    2          php                  1                            8 
    3          sql                  1                            22 
      

  15.   

    关键是  idx 要重新编号   所以不能直接select吧
      

  16.   

    SELECT min(idx) as idx1,min(类别) as 类别1,MAX(数量) AS 数量1,MAX(金额) AS 金额1 FROM 表名 GROUP BY idx,类别 IDX没有重新排序,本来就是一样的!
      

  17.   

    SELECT min(table1.idx), min(table1.类别), sum(table1.数量), sum(table1.金额)
    FROM table1
    group by table1.idx,table1.类别;试了一下,应该可以,但IDX没重排!
      

  18.   

    24楼的朋友,还是不行呀,出来的结果是这样的:Expr1000 Expr1001 Expr1002 Expr1003
    1          asp          1
    2          asp                    15
    3          php          1          8
    4          sql          1          22
      

  19.   

    24楼的朋友,还是不行呀,出来的结果是这样的: Expr1000  Expr1001            Expr1002                    Expr1003 
    ----------- -------------------------------------------------- ----------- 
    1          asp                  1                              
    1          asp                                               15 
    3          php                  1                            8 
    4          sql                  1                            22 
      

  20.   

    我是用ACCESS2003,直接做了一个查询,测试结果是对的!你再试试吧!Expr1000 Expr1001 Expr1002 Expr1003
    1      asp      1      15
    3      php      1      8
    4      sql      1      22
      

  21.   

    不行呀。我用的语句是这样的,你帮我看一下有没错哦。
    SELECT min(aaa.idx),min(aaa.类别), sum(aaa.数量), sum(aaa.金额) FROM aaa group by aaa.idx,aaa.类别
    其中aaa是表名