Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教如何将数据从县统计到州(要出现具体州名)再到省?谢谢!

jihuoma  发表于:2015-03-24 22:36:31  
复制

select 
/*重点是下面这句,进行了州合计,但无法出现具体的州名*/----------
统计单位=Case When (grouping(left(xian,4))=1 and Grouping([XIAN])=1)  Then '州合计'
              when  Grouping([XIAN])=1 Then  '云南省' 
Else XIAN End,
/*-----------------------------------------------------------------------------------*/

前期地类=case when grouping(Q_DI_LEI)=1 THEN '合计' 
              when Q_DI_LEI IN ('0110','0111','0112','0113') THEN '有林地' 
              when Q_DI_LEI IN ('0120') THEN '疏林地'  
 when Q_DI_LEI IN ('0130','0131','0132') THEN '灌木林地' 
 when Q_DI_LEI IN ('0140','0141','0142') THEN '未成林地' 
 when Q_DI_LEI IN ('0150') THEN '苗圃地' 
 when Q_DI_LEI IN ('0160','0161','0162','1631','1632','1633','1634') THEN '无立木林地' 
 when Q_DI_LEI IN ('0170','0171','0172','0173') THEN '宜林地' 
 when DI_LEI IN ('0180') THEN '林业辅助生产用地' 
 when Q_DI_LEI IN ('0200','0210','0220','0230','0240','0250','0251','0252','0253','0254') THEN '非林地' 
else '' end,
后期地类=case when grouping(DI_LEI)=1 THEN '合计'
              when DI_LEI IN ('0110','0111','0112','0113') THEN '有林地' 
              when DI_LEI IN ('0120') THEN '疏林地'  
 when DI_LEI IN ('0130','0131','0132') THEN '灌木林地' 
 when DI_LEI IN ('0140','0141','0142') THEN '未成林地' 
 when DI_LEI IN ('0150') THEN '苗圃地' 
 when DI_LEI IN ('0160','0161','0162','1631','1632','1633','1634') THEN '无立木林地' 
 when DI_LEI IN ('0170','0171','0172','0173') THEN '宜林地' 
 when DI_LEI IN ('0180') THEN '林业辅助生产用地' 
 when DI_LEI IN ('0200','0210','0220','0230','0240','0250','0251','0252','0253','0254') THEN '非林地' 
else '' end,
合计=sum(case  when BHYY IN ('81','82')
   then  round(isnull(MIAN_JI,0),2) else 0 end) + 
   round(sum(case  when BHYY IN ('91','92','93')
     then  round(isnull(MIAN_JI,0),2) else 0 end),2)
,自然因素=sum(case  when BHYY IN ('81','82')
   then  round(isnull(MIAN_JI,0),2) else 0 end)
,调查因素=round(sum(case  when BHYY IN ('91','92','93')
     then  round(isnull(MIAN_JI,0),2) else 0 end),2)
From   LDGX_BH
GROUP BY CUBE(left(xian,4),XIAN,Q_DI_LEI,DI_LEI)

=====================================================

通过sql语句统计出来的结果:

州是通过 LEFT(XIAN,4)判断的。因为按目前的统计结果统计出的州合计都不知道具体是

哪个州的合计。

统计单位 合计
======== 
530702    xxx
530402    xxx
州合计    xxx
州合计    xxx
云南省    xxx

希望得到如下结果:

统计单位 合计
======== 
530702    xxx
530402    xxx
5307州合计    xxx   
5304州合计    xxx
云南省    xxx


如果这样更好:

统计单位 合计
======== 
530702    xxx
530402    xxx
丽江市 (5307)   xxx   
玉溪市(5304)    xxx  
云南省    xxx

特奉上部分数据,请高手指点!非常感谢!点击下载此附件

 

Top
煮江品茶 发表于:2015-03-25 12:21:54

这不是很简单的事情嘛

在case语句前拼CUBE(left(xian,4)不就完事了:CUBE(left(xian,4) + case .......end as 统计单位



jihuoma 发表于:2015-03-25 22:14:10
谢谢各位的关注,问题解决了,我多用了一个 union,煮品红茶老师提出的方法貌似不可以,说 cube放所说的位置不是可用的内置函数,不过还是很感谢您!

BMW 发表于:2015-03-25 22:25:33

觉得煮江品茶老师的想法也不是不可以。如果联合查询不熟悉或觉得复杂,建议可以建立对查询的查询,分两步走,会简单些。



jihuoma 发表于:2015-03-25 22:31:10
那可能是我没用对吧,谢谢,我试试!联合倒是出结果了。就是有点麻烦!

总记录:4篇  页次:1/1 9 1 :