注册 登录
编程论坛 SQL Server论坛

语句请高手改改

菜鸟问菜问题 发布于 2010-10-09 14:32, 596 次点击
select PR0102,sum(PR0104*PR0105/10000) from databak.PR001_20100930@ZB where pr0108 NOT in  ('3%','4%','9%') group by PR0102

我的要求是pr0108 NOT in  ('3%','4%','9%')剔除'3%','4%','9%'开始的其余组数求合
9 回复
#2
筱晓绾2010-10-09 16:05
有什么问题吗?
#3
菜鸟问菜问题2010-10-09 16:19
select PR0102,sum(PR0104*PR0105/10000) from databak.PR001_20100930@ZB where pr0108 NOT in  ('3%','4%','9%') group by PR0102
select PR0102,sum(PR0104*PR0105/10000) from databak.PR001_20100930@ZB group by PR0102
我这两条语句最后的结果是一样的,
第一条语句并没有剔除满足3,4,9开头的条件

[ 本帖最后由 菜鸟问菜问题 于 2010-10-9 16:21 编辑 ]
#4
cnfarer2010-10-10 07:18
pr0108 NOT in  ('3%','4%','9%')
Pro0108字段的内容形式是 ‘3%’之类的吗?IN(枚举)中是不能通配符的,用Like。
#5
tangyunzhong2010-10-10 14:54
试一下这个应该可以达到你的要求
select PR0102,sum(PR0104*PR0105/10000) from databak.PR001_20100930@ZB where pr0108 LIKE '[^349]%' group by PR0102
你自己写的语法都不对啊!
其实你的需要也有很多种写法,但是我个人觉得这个语句简单一些.
#6
zhaoyang10082010-10-10 15:37
IN 集合中不能用通配符,server在字段中找不到3%,4%,9%的字段值,所以不能完成筛选,用楼上的方法应该可以,[^]意思是不在指定范围或集合内的单个字符
#7
筱晓绾2010-10-11 08:57
来晚了,貌似已经解决了???
#8
菜鸟问菜问题2010-10-11 13:09
谢谢,还是有点问题,呵呵
#9
tangyunzhong2010-10-11 15:37
还有什么问题啊!你也不说出来什么帮你啊
1