生成工资条?

yunshiyu 2004-12-09 03:16:23
工资表: 员工 工资项 工资
张三 基本工资 800
张三 养老保险 900
李四 养老保险 1000
李四 加班 200
李四 基本工资 600
如何生成
工资条: 员工 基本工资 养老保险 加班
张三 800 900 0
李四 600 1000 200
员工的工资项不固定,每个人之间的工资项也可能不一样
应该如何做?
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunshiyu 2005-03-23
  • 打赏
  • 举报
回复
我写了一个游标,
declare m CURSOR FOR
select a.emplid,a.classid, a.workdate from RS_KQ_EmplSys a
left join RS_DA_empl b on a.emplid=b.emplid
left join RS_KQ_Work_System c on c.id=a.classid
zlp321002 2004-12-12
  • 打赏
  • 举报
回复
我的没有写死啊!
你自己测试一下就知道了!!
yunshiyu 2004-12-09
  • 打赏
  • 举报
回复
工资项不是固定的几项
可能11月份是20 项,到了12 月份就变成25项了,不能写死啊!
yingqing 2004-12-09
  • 打赏
  • 举报
回复
fetch next from all_record into @vym,@vtotal
end
select 员工 ,sum(基本工资) ,sum(养老保险) ,sum(加班) from 工资条 group by 员工
zlp321002 2004-12-09
  • 打赏
  • 举报
回复
又是一个交叉表问题...

看看这个例子,相应修改就可以了!!

select * from T2

a b c

乒乓球 10 2002-01-01 00:00:00.000
羽毛球 20 2003-01-01 00:00:00.000
乒乓球 20 2004-01-01 00:00:00.000

(所影响的行数为 3 行)


执行:
declare @s varchar(8000)
set @s=''
select @s=@s+',['+rtrim(a)+']=max(case a when '''+rtrim(a)+''' then b else '''' end )'
from t2 group by a
set @s=stuff(@s,1,1,'')
exec('select '+@s+' from t2 ')

结果:

乒乓球 羽毛球
----------- -----------
30 20
yingqing 2004-12-09
  • 打赏
  • 举报
回复
create table 工资条(员工 ,基本工资 ,养老保险 ,加班)
declare all_record scroll cursor for select * from 工资表
open all_record
fetch next from all_record into @员工,@工资项,@工资
while @@fetch_status=0
if @工资项='基本工资'
insert into 工资条(员工 ,基本工资 ,养老保险 ,加班) values(@员工,@工资,0,0)
if @工资项='养老保险'
insert into 工资条(员工 ,基本工资 ,养老保险 ,加班) values(@员工,0,@工资,0)
if @工资项='加班'
insert into 工资条(员工 ,基本工资 ,养老保险 ,加班) values(@员工,0,0,@工资)

34,575

社区成员

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

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