一个表,字段及内容如下:
ID      CODE      NUM
1001    a         20
1001    a1        20
1002    b         25
1002    b1        25ID为1001有a,a1两项,此两项总数为20,ID为1002的总数为25,现要求1001与1002的和,即得出以下结果:
IDOfSum      Result
1000         45
如何用SQL语句实现?另一个表
ID      DATE      CODE      SERIAL    ......
1001    20030401  a         1
1001    20030401  a         2
1002    20030402  b         1
1002    20030402  b         2
1003    20030403  a         1
1004    20030404  c         1
......
要对CODE进行记数,规则为同ID的算为一条记录,如:ID=1001,但记数只记为1条。要对DATE为200304%数据进行记数。得到如下结果:
DATE        CODE        COUNT
200304      a           2
200304      b           1
200304      c           1
......
如何用SQL语句实现?

解决方案 »

  1.   

    在SQL语句里,可以按关键字用个参数进行唯一性考虑,我手头没书,你自己找,就是加一个以DIS开头的参数
      

  2.   

    yu98041154(雕花溅泪) ,不会,DATE相同时ID不同
      

  3.   

    第一个问题用SQL好像不易实现!
    以前我们都是用代码实现这样的功能!第二个问题我不太明白你的意思
      

  4.   

    beata88:
    第二个问题的要求是,ID与CODE相同的只记为一次,表中ID=1001,CODE=a的有两条记录,进行统计时只当做一条。
    而且这两个问题我也已用代码实现了,似乎效率低了些。
      

  5.   

    haoco:
    ID=1001的总数为20,20=a+a1,而不是a=20,a1=20
      

  6.   

    给你一个删除相同记录的SQL语句,希望对你有所帮助:删除表内重复记录的方法,可以利用这样的命令来删除表内重复记录: 
    delete from table_name a 
    where rowid< (select max(rowid) from table_name 
    where column1=a.column1 and column2=a.column2 
    and colum3=a.colum3 and ...); 
      

  7.   

    select  sum(distinct num)as"Result" id from 表1
    select substr(convert(char(8),date),1,6)"date",code,count(*)"count"
    from 表2
    group by code
    你可以试试
      

  8.   

    kangancn:
    你给出的我早已试过,不正确。第一句:如果再多一条记录NUM为20时,结果还是45
    第二句a结果为3,而不我期望的2SCCDTANG:
    参照你的方法我实现了第二个:
    SELECT COUNT(code) AS exp1
    FROM TABLE2 a
    WHERE (serial =
              (SELECT MAX(serial)
             FROM table2
             WHERE id = a.id)) AND (rq LIKE '200304%')
    GROUP BY code
    第一个似乎不太灵。
      

  9.   

    group by id,code,substring(date,1,6)