34,590
社区成员
发帖
与我相关
我的任务
分享
select type,min(state) as start,max(state) as end,sum(wage) from tb group by type
CREATE TABLE #A (TYPE VARCHAR(10),STATE INT,WAGE INT)
INSERT INTO #A SELECT 'A',1,50
INSERT INTO #A SELECT 'A',2,100
INSERT INTO #A SELECT 'A',3,150
INSERT INTO #A SELECT 'A',4,200
INSERT INTO #A SELECT 'S',8,300
INSERT INTO #A SELECT 'S',9,400
INSERT INTO #A SELECT 'S',12,500
SELECT IDENTITY(INT,1,1)SORT_NO,* INTO #C FROM #A ORDER BY TYPE,STATE
SELECT TYPE,MIN(STATE)STATE,MAX(STATE)[END],SUM(WAGE)SUM
FROM #C
GROUP BY TYPE,(STATE-SORT_NO)
DROP TABLE #A,#C
CREATE TABLE #A (TYPE VARCHAR(10),STATE INT,WAGE INT)
INSERT INTO #A SELECT 'A',1,50
INSERT INTO #A SELECT 'A',2,100
INSERT INTO #A SELECT 'A',3,150
INSERT INTO #A SELECT 'A',4,200
INSERT INTO #A SELECT 'S',8,300
INSERT INTO #A SELECT 'S',9,400
INSERT INTO #A SELECT 'S',12,500
CREATE TABLE #B (TYPE VARCHAR(10),STATE INT,WAGE INT,SORT_NO INT)
INSERT INTO #B
SELECT A.*, Sort_NO= (SELECT count(1) FROM #A B where B.TYPE = A.TYPE and B.STATE <=A.STATE) FROM #A A
SELECT TYPE,MIN(STATE)STATE,MAX(STATE)[END],SUM(WAGE)SUM
FROM #B
GROUP BY TYPE,(STATE-SORT_NO)
DROP TABLE #A,#B
/**
A 1 4 500
S 8 9 700
S 12 12 500