一个表,字段及内容如下:
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语句实现?
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语句实现?
以前我们都是用代码实现这样的功能!第二个问题我不太明白你的意思
第二个问题的要求是,ID与CODE相同的只记为一次,表中ID=1001,CODE=a的有两条记录,进行统计时只当做一条。
而且这两个问题我也已用代码实现了,似乎效率低了些。
ID=1001的总数为20,20=a+a1,而不是a=20,a1=20
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 ...);
select substr(convert(char(8),date),1,6)"date",code,count(*)"count"
from 表2
group by code
你可以试试
你给出的我早已试过,不正确。第一句:如果再多一条记录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
第一个似乎不太灵。