SQL 如何实现不连续数据分组统计?
表test:
date num name
-------------------------------------------------
20130101 1 张三
20130102 3 张三
20130103 3 李四
20130104 3 李四
20130105 2 张三
20130106 2 王五
现在要求统计成:
date_min date_max num_sum name
------------------------------
20130101 20130102 4 张三
20130103 20130104 6 李四
20130105 20130105 2 张三
20130106 20130106 2 王五
test中的 name不连续,如何用SQL操作实现要求的结果 ?
[解决办法]
CREATE CURSOR TEST (DATE C(8),NUM N(1),NAME C(4))
CSTR=[20130101,1,张三;20130102,3,张三;20130103,3,李四;20130104,3,李四;20130105,2,张三;20130106,2,王五]
FOR I=1 TO ALINES(A,CSTR,[;])
=ALINES(B,A(I),[,])
INSERT INTO TEST VALUES (B(1),INT(VAL(B(2))),B(3))
ENDFOR
SELECT *,0 FL FROM TEST INTO CURSOR TEST1 READWRITE
NAME1=NAME
N=1
SCAN
IF NAME!=NAME1
N=N+1
ENDIF
NAME1=NAME
REPLACE FL WITH N
ENDSCAN
SELECT NAME,MIN(DATE),MAX(DATE),SUM(NUM),FL FROM TEST1 GROUP BY FL,NAME