员工薪资历史-Union实现

( 2010-8-27 记录)员工薪资历史 -Union 实现:

1、  表结构

Salary ( id , empID , jbxz,yfxz,sfxz,jse , pid )

Perion(id,bm,year,month,sdate,edate…)

表结构大体是这样的,其中 bm 是薪资日期编码如 2010-8 ,但是不一定也可以是 108 ,无规则可言。 Year 是薪资年, month 是薪资月, sdate 和 edate 是开始和结束日期。

2.    本来打算用交叉表实现的,原本已经用交叉表实现了,不过最后未能用交叉表实现“ xxxx 小计”,只能实现的显示“小计”,最后改用union 方式实现。

3.       实现要点:

注意 group by 中的字段及顺序,注意 order by 中的字段及顺序

4 .代码如下:

/**
    统计员工的期间薪资
*/

IF EXISTS (select * from sysobjects where id = object_id('sp_count_salary') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  DROP PROCEDURE sp_count_salary
GO

CREATE PROCEDURE sp_count_salary
  @P_EMP_ID INT,         --员工id
  @P_SPLA_PER_ID INT,    --开始期间id
  @P_EPLA_PER_ID INT     --结束期间id
WITH encryption
AS
BEGIN
  BEGIN TRANSACTION T1

   DECLARE @V_S_YEAR INT            --开始期间年份
   DECLARE @V_S_MONTH INT           --开始期间月份
   DECLARE @V_E_YEAR INT            --结束期间年份
   DECLARE @V_E_MONTH INT           --结束期间月份

   select @V_S_YEAR=pla_per_year,@V_S_MONTH=pla_per_month from pla_period where [email protected]_SPLA_PER_ID
   select @V_E_YEAR=pla_per_year,@V_E_MONTH=pla_per_month from pla_period where [email protected]_EPLA_PER_ID 

   select (CAST(pla_per_year AS NVARCHAR(4)) + '-' + RIGHT('0' + CAST(pla_per_month AS NVARCHAR(2)), 2)) as '时间', sum(pay_res_btax) N'基本薪资',sum(pay_res_atax) N'应发薪资',sum(pay_res_result) N'实发薪资',sum(pay_res_tax) N'缴税额'
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 group by pla_per_year,pla_per_month
 union
 (
   select cast(pla_per_year as varchar(10))+N'小计' as '时间', sum(pay_res_btax) N'基本薪资',sum(pay_res_atax) N'应发薪资',sum(pay_res_result) N'实发薪资',sum(pay_res_tax) N'缴税额'
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 group by pla_per_year
 )
 union
 (
   select N'合计' as '时间', sum(pay_res_btax) N'基本薪资',sum(pay_res_atax) N'应发薪资',sum(pay_res_result) N'实发薪资',sum(pay_res_tax) N'缴税额'
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 )
 order by (CAST(pla_per_year AS NVARCHAR(4)) + '-' + RIGHT('0' + CAST(pla_per_month AS NVARCHAR(2)), 2))

 IF @@ERROR > 0
 BEGIN
   ROLLBACK TRANSACTION T1
 END
 ELSE
 BEGIN
   COMMIT TRANSACTION T1
 END
END

GO

--EXEC sp_count_salary 4901,1131,1153

员工薪资历史-Union实现

时间: 2024-08-16 16:09:20

员工薪资历史-Union实现的相关文章

这些银行薪酬不降反涨,各银行工资待遇大揭秘!员工又如何评价?

这两年银行员工日子不太好过的说法似乎越来越多,真实情况到底如何?降薪+减员,2016年上市银行年报已全部披露完毕,能用"降薪+减员"来概括?真实情况大大出人意料! 我们先来做几个重要结论标注: 1.整体薪酬在下降吗? NO!除工行.平安.光大3家银行外,其余10家银行整体薪酬均较2015年有所增长,少数银行增幅高于10%,甚至20%: 2.整体严重减员? 绝不能简单下结论.7家上市银行存在减员现象:结构上看,由于电子渠道替代.劳务派遣转为劳务外包.员工自身考虑等原因,各行流失的员工以专

摩拜获巨额融资,为何还被曝拖欠底层员工薪水?

当前的中国互联网圈子一直不缺劲爆话题,共享单车尤是风口浪尖.如果关注或是搜索共享单车相关关键词,满屏的利好消息顿时便会充斥整个屏幕,让人一眼看去其乐融融和谐无边的景象几乎直截了当的告诉读者:共享单车是太阳底下最灿烂的事业,比如动辄融资数亿美金.或是市场份额已经轻易碾压对手-- 然而抛开公关宣传和资本手段之后,大众才会发现所有关于浮面的荣光和鲜花底下,几乎都有不可遮掩的暗面,其中一些近乎让人不齿的举动更是让人眼界全开. 摩拜融资6亿,但被曝已拖欠员工4月工资 摩拜单车是共享单车领域的当家花旦,依靠

创业公司应该怎么分配员工期权?

一.  员工期权激励的心法 1.  期权VS限制性股权VS利益分成 对员工的利益激励方式,常见的有期权.限制性股权与利益分享. (1) 期权,是在条件满足时,员工在将来以事先确定的价格购买公司股权的权利. (2) 限制性股权:顾名思义,第一,它是股权,第二,它有权利限制,是有权利限制的股权. 期权与限制性股权的相同点是,从最终结果看,它们都和股权挂钩,都是对员工的中长期激励:从过程看,都可以设定权利限制,比如分期成熟,离职回购等. 不 同点是,激励对象真正取得股权(即行使股东权利)的时间节点不一

员工管理系统程序

#include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define PAGE 3 #define MAX 1000 #define N 5 int k=0; /*结构体类型*/ typedef struct {   int num;/*员工号*/ char name[20];/*姓名*/ char sex[5];/*性别*/ int

程序员如何正确的评估自己的薪资

十一大假过完已有多半月之久,往往这时候是又到了今年最后一个黄金跳槽节点了,跳与不跳,能力就在那里,工作就在那里,薪资也就在那里!这次和大家聊聊程序员的薪资问题.看看能不能引起你的共鸣! 价值的构成 程序员的价值,简单的说就是薪资,并不是由你觉得自己应该值多少钱来定的,而是由招聘方觉得你值多少钱来决定的.影响招聘方定价最重要的三个方面分别是:1.供需2.增幅3.价值 如下分析: 1.价值 在理想情况下,个人薪资是由你给公司带来的价值决定的.这和你自己NB不NB没有直接关系,很多程序员觉得"我那么N

要绩效考核吗?管理层是在开玩笑,而没有在意员工的利益

越来越多的公司准备在企业中实施绩效考核,但是许多公司在设计之前就已经放弃了.我经常问老板,您进行绩效考核吗?您是绩效还是考核的起点?是:绩效!一.点评1.没有绩效思维,只有考核思维等效的是将规则和法规转换为评估标准.这样做是为了对员工进行评估,由于没有员工喜欢被评估,因此员工会发生冲突.2.主要基于带扣,员工感觉不好所有标准均扣除.这是非人类的设计.企业必须以人为本.首先,在机制上,它们应该以人为本.什么是以人为本?以人为本是符合人性的机制.有必要激励员工,而不是压制..扣减员工是主要任务,它可

Hive手写SQL案例

1-请详细描述将一个有结构的文本文件student.txt导入到一个hive表中的步骤,及其关键字 假设student.txt 有以下几列:id,name,gender三列 1-创建数据库 create database student_info; 2-创建hive表 student create external table student_info.student( id string comment '学生id', name string comment '学生姓名', gender st

PLSQL性能优化技巧

1.理解执行计划1-1.什么是执行计划 oracle数据库在执行sql语句时,oracle的优化器会根据一定的规则确定sql语句的执行路径,以确保sql语句能以最优性能执行.在oracle数据库系统中为了执行sql语句,oracle可能需要实现多个步骤,这些步骤中的每一步可能是从数据库中物理检索数据行,或者用某种方法准备数据行,让编写sql语句的用户使用,oracle用来执行语句的这些步骤的组合被称为执行计划. 当执行一个sql语句时oracle经过了4个步骤: ①.解析sql语句:主要在共享池

Oracle - 查询语句 - 多表关联查询

/* SQL语句的历史版本 SQL89 比较多 SQL92 SQL99 多表关联查询 笛卡尔积 等值关联查询 非等值关联查询 左外连接 右外连接 全外连接 自连接 */ ----------------------------------92语法 --查询部门名称和员工名称(两张表的关联没有任何的约束条件) SELECT * FROM EMP; SELECT * FROM DEPT; SELECT * FROM SALGRADE; SELECT * FROM EMP,DEPT; SELECT *