免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3514|回复: 4
收起左侧

在SQl中的case when条件语句,在access中可以用iif()代替

[复制链接]

3

主题

56

铜板

5

好友

技术员

Rank: 3Rank: 3

积分
82
发表于 2013-1-24 15:30 | 显示全部楼层 |阅读模式
在查询的时候,常用到要对一个字段进行条件取值,结果要分字段显示。大家都想到group by。但是在gdt表里面,不能对group by的结果取值到单元格里,怎么办呢?
例如:我们要查询DLTBFeatures表里的TBDLMJ,根据DLBM进行分类,分为耕地,林地,园地,交通用地等等。
耕地的dlbm 是:   011  012   013   
林地的dlbm 是:   021  022   023
园地的dlbm 是:   031   032   033
交通用地的dlbm 是:   104
DLBM        TBDLMJ
011        5490.29621
012        1504.162206
013        363.124101
021        14536.4831
022        12511.07672
023        7984.372023
031        556.596463
032        3816.164485
033        1479.941813
104        10283.38751
我们要实现的是统计耕地,林地,园地,交通用地的面积,并作为gdt的模板。那我们的结果应该这样才可以作为模板里单元格的调用:
GDMJ                        LDMJ                   YDMJ              JTYDMJ
7357.582517        35031.93185        5852.702761         10283.38751
在sql 里面我们可以使用case  when  xxx then xxx    else xxx  end来实现(这个不举例了,大家可以在网上搜一下用法),但是access不支持。怎么办呢,难倒我们在gdt里的每一行创建一个组,写一条类似如耕地:
select  sum(TBDLMJ)  from  DLTBFeatures  where   DLBM  in(‘011’,'012',013)   这样的语句么?难倒不能创建一个视图么?
这样的话如果DLTBFeatures表换掉了,或设计到要统计不同的村,加上别的条件,我们就要更新所有组里面的where 后面的条件,为我们的维护和二次利用增加了工作量。
这时候我们就可以用到access里面的iff语句,就可以创建一个视图。
iif(条件,操作,操作2)   操作2相当于else  如:
select
Sum(IIf(dlbm In ('011','012','013'),tbdlmj,Null))   AS gdmj,
Sum(IIf(dlbm In ('021','022','023'),tbdlmj,Null))   AS ydmj,
Sum(IIf(dlbm In ('031','032','033'),tbdlmj,Null))   AS ldmj,
Sum(IIf(dlbm In ('104'),tbdlmj,Null))    AS Jtydmj
FROM dltbfeatures
WHERE (((dltbfeatures.[qsdwmc])='长命村'));
注:iif()里面不能试用聚合函数。所以sum要在外面使用。
这样我们在维护的时候,只用改掉村名就可以了。有别的更改我们也只需要在这一条语句上更改,更加方便!
出处互联网:http://bbs.163.com/thread-7512794-1-1.html

185

主题

2898

铜板

13

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2398
发表于 2013-1-24 16:17 | 显示全部楼层
学习了 支持一下!

评分

参与人数 1铜板 +1 收起 理由
admin + 1 亲,你好快哦~~~

查看全部评分

回复 支持 反对

使用道具 举报

7711

主题

31万

铜板

892

好友

超级版主

地信网论坛贵宾

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
128764

宣传勋章优秀斑主灌水勋章活跃勋章贡献勋章童话节勋章

QQ
发表于 2013-1-24 21:42 | 显示全部楼层
谢谢楼主分享
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
发表于 2013-1-28 08:57 | 显示全部楼层

很不错的学习资料


回复 支持 反对

使用道具 举报

6

主题

1万

铜板

20

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2985
发表于 2021-5-16 10:47 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表