一个问题!帮忙,写下一步

tianluoniao 2003-10-09 02:26:06
姓名 基本工资 奖励 年
a 1000 20 20 2003-01-03
b 1100 30 30 2003-03-06
a 900 20 70 2003-02-06
b 1100 20 70 2003-02-03

通过年的查询如输入2003
月 基本工资 扣出 奖励 实际发放 年薪总和 剩余年薪
1 2100 50 50 2100 21000 18900
2 2000 40 1400 2100 21000 17800
..............................
12 .........................................21000....... 0
合计 **** ***** *** ***** ***** ***
select month(a.年) 月, SUM(a.基本工资) 基本工资,sum(a.扣出) 扣出,
sum(a.奖励) 奖励, SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励) 实际发放,
sum(b.年薪) 年薪总和,
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励) 剩余年薪
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
where year(a.年)='2003' group by month(年)
union
select '合计',sum(基本工资),sum(a.扣出),sum(a.奖励),
SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励),sum(b.年薪),
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励)
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
where year(a.年)='2003'
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
select c.姓名,c.部门,month(a.年) 月, SUM(a.基本工资) 基本工资,sum(a.扣出) 扣出,
sum(a.奖励) 奖励, SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励) 实际发放,
sum(b.年薪) 年薪总和,
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励) 剩余年薪
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
join 表3 c on a.姓名 = c.姓名
where year(a.年)='2003' group by c.姓名,c.部门,month(年)
union
select '合计','合计','合计',sum(基本工资),sum(a.扣出),sum(a.奖励),
SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励),sum(b.年薪),
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励)
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
where year(a.年)='2003'


youngby 2003-10-09
  • 打赏
  • 举报
回复
你的表设计好象不是规范化的呀

表 3
deptId 部门
1 技术
2 市场

再者表2,表3中个加个deptID 列
再用JOIN 就和简单了。


tianluoniao 2003-10-09
  • 打赏
  • 举报
回复
上面的少了!
因该是这样
表1
姓名 年薪 年
a 10000 2003
b 11000 2003


表2
姓名 基本工资 奖励 年
a 1000 20 20 2003-01-03
b 1100 30 30 2003-03-06
a 900 20 70 2003-02-06
b 1100 20 70 2003-02-03

通过年的查询如输入2003
月 基本工资 扣出 奖励 实际发放 年薪总和 剩余年薪
1 2100 50 50 2100 21000 18900
2 2000 40 1400 2100 21000 17800
..............................
12 .........................................21000....... 0
合计 **** ***** *** ***** ***** ***

怎么同过时间来统计每个月发放后年薪情况,*****代表最后合计的数据
select month(a.年) 月, SUM(a.基本工资) 基本工资,sum(a.扣出) 扣出,
sum(a.奖励) 奖励, SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励) 实际发放,
sum(b.年薪) 年薪总和,
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励) 剩余年薪
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
where year(a.年)='2003' group by month(年)
union
select '合计',sum(基本工资),sum(a.扣出),sum(a.奖励),
SUM(a.基本工资)-sum(a.扣出)+sum(a.奖励),sum(b.年薪),
sum(b.年薪)-SUM(a.基本工资)+sum(a.扣出)-sum(a.奖励)
from 表2 a inner join 表1 b on b.姓名 = a.姓名 and b.年='2003'
where year(a.年)='2003'

我现在想在键表 表3
表 3
姓名 部门
a 技术
b 市场
在以上的SQL语句中添加 姓名和部门的查找!
愉快的登山者 2003-10-09
  • 打赏
  • 举报
回复
扣出?
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
什么问题?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧