SELECT s.GBSYICDDM,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL=0 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S0,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 1 AND 4 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S1,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 5 AND 9 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S5,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 10 AND 14 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S10,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 14 AND 19 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S15,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 20 AND 24 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S20,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 25 AND 29 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S25,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 30 AND 34 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S30,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 35 AND 39 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S35,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 40 AND 44 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S40,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 45 AND 49 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S45,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 50 AND 54 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S50,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 55 AND 59 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S55,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 60 AND 64 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S60,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 65 AND 69 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S65,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 70 AND 74 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S70,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 75 AND 79 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S75,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 80 AND 84 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S80,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL>=85 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S85
FROM TB_SMTJ_SWBKB S GROUP BY s.GBSYICDDM像这种语句该怎样处理最合理,或者是有其它代替?谢谢各位,在线等待!!!
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL=0 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S0,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 1 AND 4 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S1,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 5 AND 9 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S5,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 10 AND 14 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S10,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 14 AND 19 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S15,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 20 AND 24 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S20,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 25 AND 29 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S25,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 30 AND 34 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S30,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 35 AND 39 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S35,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 40 AND 44 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S40,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 45 AND 49 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S45,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 50 AND 54 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S50,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 55 AND 59 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S55,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 60 AND 64 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S60,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 65 AND 69 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S65,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 70 AND 74 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S70,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 75 AND 79 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S75,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL BETWEEN 80 AND 84 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S80,
(SELECT COUNT(1) FROM TB_SMTJ_SWBKB B
WHERE b.GBSYICDDM=s.GBSYICDDM
AND b.SZNL>=85 AND TO_CHAR(B.SWRQ,'yyyy')='2009') S85
FROM TB_SMTJ_SWBKB S GROUP BY s.GBSYICDDM像这种语句该怎样处理最合理,或者是有其它代替?谢谢各位,在线等待!!!
大概看了下你的语句,主要是B.SZNL在变化导致的查询,先把所有记录分组后在进行统计,例如
增加一个字段(gp)对B.SZNL进变换,当B.SZNL最后一位是1-4之间都变换为0,是5-9之间都变换为1,这样
你的记录变为这样
.........B.SZNL,0
...............,0
...............,0
...............,0
...............,0
...............,1
...............,1
...............,1
...............,1
...............,1
...............,10
.....
统计的时候就很简单了,
SELECT COUNT(1)
FROM (变换后的表)
group by gp