Access交流中心

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

[5分]关于access中的SQL实现?请指教!非常感谢

坐井看天阔  发表于:2014-05-11 17:29:13  
复制

SELECT 单位名称,

 

sum(iif(项目实际名称='湿地保护补助',拨款金额,0)) AS 湿地保护补助 ,

sum(iif(项目实际名称='环境保护补助',拨款金额,0)) AS 环境保护补助 ,

......(此处可能有N多类似以上这样的行)

 

sum(拨款金额)
FROM 资金拨配表
group by 单位名称

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

如上面所示,有颜色的字体部分可能有许多行(即 "项目实际名称"可能有很多,个数不确定( 放在一个表“项目名称表”:select distinct 项目实际名称 from 项目名称表)中,

能否通过定义变量的方式来实现如下功能的查询:

SELECT 单位名称,

sum(iif(项目实际名称='湿地保护补助',拨款金额,0)) AS 湿地保护补助 ,

sum(iif(项目实际名称='环境保护补助',拨款金额,0)) AS 环境保护补助 ,

sum(iif(项目实际名称='A',拨款金额,0)) AS  A,
sum(iif(项目实际名称='B',拨款金额,0)) AS  B,
sum(iif(项目实际名称='C',拨款金额,0)) AS  C,
sum(iif(项目实际名称='D',拨款金额,0)) AS  D,
sum(iif(项目实际名称='E',拨款金额,0)) AS  E,
sum(iif(项目实际名称='F',拨款金额,0)) AS  F,
......

sum(iif(项目实际名称='F50',拨款金额,0)) AS F50,

 sum(拨款金额)
FROM 资金拨配表
group by 单位名称

 

注:项目实际名称不固定,可能有30个,也可能有100个,只能通过“select distinct 项目实际名称 from 项目名称表”获取。恳请高手指点!

 

Top
煮江品茶 发表于:2014-05-11 18:57:12

又是一个数据表结构不对带来的问题。

像这样的数据需要做成主子表结构,比如可以这样来处理:

单位表:单位ID(主键),单位名称,......

拨款表:拨款ID(主键),单位ID(外键),拨款类别,金额

这样处理你的问题的前提都没有了。而且拨款的类别还具有扩展性,统计也更简单。



坐井看天阔 发表于:2014-05-12 09:05:13

我建的表是这样的,  就是两个表,  但单位名称会动i态增加,不固定,而且想得到的表是横向的,如excel中有一个长表头一样。还必须在access中实现!如图:(其中单位名称、发文名称都是用的Id,只是显示为汉字而已)

 



煮江品茶 发表于:2014-05-12 12:25:15

这就是一个交叉查询的问题嘛,怎么会需要那么复杂?

你可以动态生成交叉查询(根据汇总的程度、时间段等),然后将这个动态生成的交叉查询导入到Excel表中。


比如:设查询条件为2014年,则:

TRANSFORM Sum(拨款表.拨款金额) AS 拨款金额之总计
SELECT 拨款表.单位名称
FROM 拨款表
WHERE (((Year([拨款日期]))=2014))
GROUP BY 拨款表.单位名称, Year([拨款日期])
PIVOT [发文名称] & [项目实际名称];


你可以通过窗体的变量设置,来改变sql语句,形成各种各样的交叉查询结果。






renco 发表于:2014-05-12 15:03:03

直接的SQL(即查询)可能也无法完全达到LZ的要求,达到效果的话,只能通过VBA程序来设计完成

处理会复杂一些



坐井看天阔 发表于:2014-05-12 23:16:30
非常感谢煮江品茶老师,真的太谢谢您了,就是我要的效果,我以前都不知道这种写法,很精简,功能很强大,后续可能还有相关问题需要请教,谢谢!同时也谢谢renco老师的关注。

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