CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

求从A,B表计算出工资的SQL语句

楼主weifai88(weifai88)2005-12-20 09:54:16 在 MS-SQL Server / 疑难问题 提问

tab_a  
  组别           工号       姓名     日期                     正常             加班时间   选项  
  a_group   a_id     a_name   a_date             a_nortime   a_outime   a_ch  
  001           A001     张三       2005-10-01         8.00             2.00           1  
  001           A001     张三       2005-10-02         8.00             1.50           1  
  001           A001     张三       2005-10-03         8.00             3.50           2  
  ...             ...     ..             ....                   ..                 ..               ..  
  001           A002     李四       2005-10-01         7.00             1.50           1  
  001           A002     李四       2005-10-02         8.00             3.50           3  
  ...             ...       ..         .....                   ..                   ..             ..  
   
   
  tab_b  
   
  正常         1.5倍           2倍             3倍  
  b_nor     b_one         b_tow       b_three  
  3.00       4.50             6.00           9.00  
   
   
   
   
  计算出每个工号每个月正常时间,加班时间(按选项计),及上班工资及加班工资  
  如:  
  组别     工号       月上班工时   工资     月加班工时(1)   工资       月加班工时(2)   工资     月加班工时(3)   工资         总工资  
  001     A001           24.00         72.00         3.5               15.75         3.50               21.00         0.0                 0.0         108.75  
  001     A002           15.00         45.00         1.5                 6.75         0.00                 0.00         3.5               31.5           83.25  
  ..   ...                   ..                 ..               ..        
  问题点数:50、回复次数:5Top

1 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-20 10:26:13 得分 50

 
  select   a_group   as   组别,a_id   as   工号,sum(a_nortime)   as   月上班工时,  
  sum(a_nortime)   *   (select   b_nor   from   tab_b)   as   工资,  
  sum(case   when   a_ch=1   then   a_outime   else   0   end)   as     [月加班工时(1)],  
  sum(case   when   a_ch=1   then   a_outime   else   0   end)   *   (select   b_one   from   tab_b)   as   工资,  
  sum(case   when   a_ch=2   then   a_outime   else   0   end)   as     [月加班工时(2)],  
  sum(case   when   a_ch=2   then   a_outime   else   0   end)   *   (select   b_tow   from   tab_b)   as   工资,  
  sum(case   when   a_ch=3   then   a_outime   else   0   end)   as     [月加班工时(3)],  
  sum(case   when   a_ch=3   then   a_outime   else   0   end)   *   (select   b_three   from   tab_b)   as   工资,  
  isnull(sum(a_nortime)   *   (select   b_nor   from   tab_b),0)   +  
  isnull(sum(case   when   a_ch=1   then   a_outime   else   0   end)   *   (select   b_one   from   tab_b),0)   +  
  isnull(sum(case   when   a_ch=2   then   a_outime   else   0   end)   *   (select   b_tow   from   tab_b),0)   +  
  isnull(sum(case   when   a_ch=3   then   a_outime   else   0   end)   *   (select   b_three   from   tab_b),0)   as   总工资  
  from   tab_a  
  group   by   a_group,a_id,month(a_date)Top

2 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-20 10:29:38 得分 0

tab_b表设计成这样才更容易处理  
  类型       系数  
  type       num  
  0             3.00  
  1             4.50  
  2             6.00  
  3             9.00Top

3 楼weifai88(weifai88)回复于 2005-12-20 10:31:02 得分 0

哦,谢谢了Top

4 楼lsqkeke(可可)回复于 2005-12-20 10:31:19 得分 0

哦,你表tab_a中的字段a_ch   其值是与表tab_b中的倍数是对应关系哈!  
  计算方法好清楚,尝试写一下  
  Top

5 楼lsqkeke(可可)回复于 2005-12-20 10:34:45 得分 0

支持wangtiecheng(cappuccino)    
  呵呵   刚看完出来   他就写出来了     :)Top

相关问题

  • 怎么用SQL语句表达 A÷B ?
  • 新手(才领一个月工资)求一SQL语句。
  • 一个关于工资的SQL语句,急
  • 求SQL语句
  • sql语句。
  • sql语句?
  • sql 语句?
  • 求SQL语句
  • ***求SQL语句***
  • sql语句??

关键词

  • 工资
  • 工时
  • 加班
  • 工号
  • nortime
  • outime
  • 计算
  • 组别
  • 月
  • 上班

得分解答快速导航

  • 帖主:weifai88
  • wangtiecheng

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo