• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

关于条件求和

eminena 2014-06-05 05:44:28
表: SFD_2 ( ZYH, SFLB, SJFY)

要求输出:

按 ZYH 分组,在同一行里分不同的 SFLB 求 SJFY 的和

语句:

select ZYH ,sum(SJFY),sum(case when SFLB='700001' then SJFY else 0 end ) ,
sum(SJFY),sum(case when SFLB='700002' then SJFY else 0 end )
from SFD_2
where ZYH>='95001'
group by ZYH

结果 ,类似 sum(case when SFLB='700001' then SJFY else 0 end ) 没有求和,永远为 0
应该怎样实现?

...全文
204 点赞 收藏 7
写回复
7 条回复
昵称90天可改一次 2014年06月06日

 sum(case when SFLB='700001' then convert(int,SJFY) else 0 end ) 
转int求和
回复 点赞
卖水果的net 版主 2014年06月06日
zyh 的数据类型是 字符型的吧?

-- 这两个条件的原因
SFLB='700001' 
zyh>='95001'

回复 点赞
习惯性蹭分 2014年06月05日
目测语句没问题 select * from SFD_2 where zyh>='95001' and sflb in('700001','700002') 这个看有木有数据出来
回复 点赞
--小F-- 2014年06月05日
你这个的写法应该是没什么问题的 要不然给点数据来我们帮你写写。
回复 点赞
chen357313771 2014年06月05日
select ZYH ,sum(case when SFLB='700001' then SJFY else 0 end ) ,sum(case when SFLB='700002' then SJFY else 0 end ) from SFD_2 where ZYH>='95001' group by ZYH 这样不行吗
回复 点赞
eminena 2014年06月05日
引用 1 楼 chen357313771 的回复:
直接写0不就完了?
是说: 类似 sum(case when SFLB='700001' then SJFY else 0 end ) 没有实现求和作用,,应该怎样写,才能按不同的 SFLB 来求和
回复 点赞
chen357313771 2014年06月05日
直接写0不就完了?
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告