高分求助:向高手求解算法!

recollectpainer 2003-04-16 12:15:42
开发环境:SQL Server 2000 & VB6

SQL中有两个表:员工信息表 和 员工工资发放表
工资表中记录每次工资发放清单
每个月该发哪些人的工资从员工表中提取员工编号

问题一:
求本月哪些人的工资未发放
将未发放工资的的 员工编号、员工姓名和上次发放工资的日期查询出
绑定在一个 datagrid 控件上
请问应怎样去做查询???

问题二:
如果在工资表中有一个字符 <工资类型>
每个员工每月发放的费用中都有两种:基本工资 和 奖金
问:如何分别查询
是否需要将两种费用分到两个表中,然后分别用问题一的解法处理?
...全文
46 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-04-16
  • 打赏
  • 举报
回复
1、
select *,(select max(发放日期) from 工资表 where 员工编号=员工表.员工编号) 上次发放工资的日期 from 员工表 where 员工编号 not in (select 员工编号 from 工资表 where datediff(month,发放日期,getdate())=0)

2、
不需要可以用case语句如:
select 员工编号,case 工资类型 when '基本工资' then 工资金额 end 基本工资金额,case 工资类型 when '奖金' then 工资金额 end 奖金金额 from 工资表
recollectpainer 2003-04-16
  • 打赏
  • 举报
回复
员工表: 员工编号、员工姓名、性别 ......
工资表: 员工编号、工资类型、工资金额、年、月、发放日期 ......
(此处年、月指工资发生的年、月,不是发放日期)

数据暂无,程序正在开发ing ......
CrazyFor 2003-04-16
  • 打赏
  • 举报
回复
贴出部份数据和表结构,
happydreamer 2003-04-16
  • 打赏
  • 举报
回复
2.可以放在一个表里


工资表:
员工编号、工资类型、工资金额、年、月、发放日期
a 基本工资 100
a 奖金 200
...

然后用交叉表的方法查询就可以
happydreamer 2003-04-16
  • 打赏
  • 举报
回复
select a.员工编号,a.员工姓名,max(b. 发放日期)
from 员工表 a join 工资表 b on a.员工编号=b.员工编号
where a.员工编号 not in
(select 员工编号 from 工资表 where datediff(mm,发放日期,getdate())=0 )
group by a.员工编号,a.员工姓名


22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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