SQL分组统计每个大类下面有多少个小类并形成统计表结构:
原始数据表ptenudetail如下:
类名(ENUITEMLABEL)分类ID(ENUITEMVALUE)
农、林、牧、渔业 A
农业 A01
畜牧业 A03
牲畜的饲养 A031
农业服务业 A051
采 矿 业 B
煤炭开采和洗选业 B06
褐煤的开采洗选 B062
其他采矿业 B11
制 造 业 C
农副食品加工业 C13
谷物磨制 C131
国际组织 T
按分类ID分组统计如下:
SELECT LEFT(ENUITEMVALUE, 1),COUNT(ENUITEMVALUE) FROM ptenudetail WHERE (ENUTYPE = 'TRADETP') GROUP BY LEFT(ENUITEMVALUE,1)
结果如下:
A 5
B 4
C 3
T 1
如果要在对应的ID号前显示出对应的名称,就在SELECT语名加类名列并在GROUP BY后面进行再对类名进行分组这样统计出的数据并不是我们设想的结果,为解决此类问题语句如下:
按分类ID分组统计并对应类名称显示列表如下:
SELECT a.ENUITEMLABEL,a.ENUITEMVALUE,b.tj FROM ptenudetail a , (SELECT LEFT(ENUITEMVALUE, 1) as t, COUNT(*) as tj FROM ptenudetail WHERE (ENUTYPE = 'TRADETP') GROUP BY LEFT(ENUITEMVALUE, 1)) b where a.ENUITEMVALUE=b.t and (ENUTYPE = 'TRADETP')
结果如下:
农、林、牧、渔业 A 5
采 矿 业 B 4
制 造 业 C 3
国际组织 T 1