一个奇怪的sql问题!

zengwj 2004-05-04 09:24:13
Select 工人编号 as 编号,工人姓名 as 姓名, 性别,籍贯,职务,
sum(case when 单位='件' or 单位='个' then 金额 else 0 end) as 计件工资 ,
sum(case 单位 when '小时' then 金额 else 0 end) as 计时工资 ,
sum(case when 工序名称='伙食补贴' then 金额 else 0 end) as 伙食补贴,
sum(case when 工序名称='全勤奖' then 金额 else 0 end ) as 全勤奖,
sum(case when 工序名称='工龄奖' then 金额 else 0 end) as 工龄奖,
sum(case when 品名='加班费' or 工序名称='加班费' then 金额 else 0 end ) as 加班费,
sum(case when 工序名称='补其它' then 金额 else 0 end) as 补其它,

sum(case when 单位='件' or 单位= '个' or 单位='小时' or 工序名称='伙食补贴'or
工序名称='全勤奖' or 工序名称='工龄奖' or 品名='加班费' or 工序名称='加班费'or
工序名称='补其它' then 金额 else 0 end) as 应发合计,

sum(金额) as 实发金额,' ' as 签名 From 项目查询,员工
where 项目查询.员工 = 员工.ID and 部门 = '车间七组' and
项目查询.日期 between '2004/03/01' and '2004/03/31'
group by 工人编号,工人姓名,性别,籍贯,职务 order by 工人编号


******************************************************************

上面语句中的 应发合计 和 实发金额为什么不同!!!?

...全文
90 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zengwj 2004-05-04
哦,谢了,搞定
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-04
那你就将实发金额的统计写成与应发合计一样啊。
  • 打赏
  • 举报
回复
zengwj 2004-05-04
我想使这里的 应发合计 和 实发金额 的值相同,但应发合计当然不能用sum(金额) as 应发合计的这种语法!
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-04
不知道你想要什么结果?
  • 打赏
  • 举报
回复
zengwj 2004-05-04
那我应该怎么写才可以使这个sql语句成为我想要的呢?

谢谢前辈指导!
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-04
怎么会一样? 实发金额根本没有做条件限制

sum(金额) as 实发金额

  • 打赏
  • 举报
回复
zengwj 2004-05-04
所以实发金额也并不是统计所有的呀
  • 打赏
  • 举报
回复
zengwj 2004-05-04
你看看上面的 sum(case………………) 的部分,都是对实发金额的条件的限定呀,这些条件与实发合计的条件是相同的
  • 打赏
  • 举报
回复
zengwj 2004-05-04
可是问题是实发金额统计的金额的条件和应发合计的条件是一样的呀!
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-04
应发合计只统计满足条件下列条件的嘛:

单位='件' or 单位= '个' or 单位='小时' or 工序名称='伙食补贴'or
工序名称='全勤奖' or 工序名称='工龄奖' or 品名='加班费' or 工序名称='加班费'or
工序名称='补其它'


而实发金额是统计所有的
  • 打赏
  • 举报
回复
8992026 2004-05-04
呵呵,语句不同结果就不同,要求不同语句就不同
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-04
统计的条件不一样,结果当然不同啦。
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-05-04 09:24
社区公告
暂无公告