0% found this document useful (0 votes)
20 views16 pages

Logs

Uploaded by

aakib8414
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views16 pages

Logs

Uploaded by

aakib8414
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 16

-- =============================================

/*
-- Author: Abzooba
-- Create date:
-- Description: S
--
-- EXEC [sp_get_historical_compensation_dashboard_excel_data] '[email protected]_',
2021, 2022, null, 1
-- exec sp_get_historical_compensation_dashboard_excel_data '[email protected]_' ,
'2021', '2022', null, 1
*/

--select dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL('', 0), 1) )


-- =============================================
CREATE PROCEDURE [dbo].[sp_get_historical_compensation_dashboard_excel_data] @uid
VARCHAR(100), @p_from_year INT,
@p_to_year INT, @p_isActive VARCHAR(10), @p_is_self BIT
AS
BEGIN
EXEC OpenKeys;
SET NOCOUNT ON;

DECLARE @v_emp_id VARCHAR(100);


DECLARE @v_year varchar(4);
DECLARE @v_to_year INT;
DECLARE @v_FROM_year INT;
DECLARE @sql VARCHAR(MAX);
DECLARE @v_year_flag INT;
DECLARE @v_uid VARCHAR(100);
DECLARE @v_is_self BIT;
DECLARE @v_IfAdmin BIT;
DECLARE @v_ifLt BIT;
DECLARE @v_isActive VARCHAR(10);
DECLARE @v_display_year VARCHAR(20);
DECLARE @v_header varchar(100);
DECLARE @v_toYear INT;
DECLARE @v_toYearHeading INT;

SET @v_year='';
SET @sql = ' ';

SET @v_to_year = @p_to_year;


SET @v_toYear = @p_to_year+1;
SET @v_toYearHeading = @p_to_year
SET @v_FROM_year = @p_from_year;
Declare @tep_table table
(
status_name varchar(100),
Id int
)

Insert into @tep_table Exec getEmailIfExistProc @uid


--SELECT @v_LT_id = emp_id FROM employee_new WHERE RTRIM(LTRIM(email)) =
@uid;
SELECT @v_uid = id FROM @tep_table;

--SET @v_uid = @uid;


SET @v_is_self = @p_is_self;

IF (@p_isActive = '0' OR @p_isActive is NULL)


BEGIN
SET @v_isActive =1;
END
ELSE
BEGIN
SET @v_isActive=0;
END

IF @v_FROM_year = '0' OR @v_FROM_year IS NULL


BEGIN
SELECT @v_FROM_year = period_desc FROM appraisal_period WHERE
Is_Default = 1;
END

IF @v_to_year = '0' OR @v_to_year IS NULL


BEGIN
SELECT TOP(1) @v_to_year = period_desc FROM (SELECT DISTINCT
appraisal_period_id
FROM comp_yearwise_salary) app1 INNER JOIN appraisal_period app2
ON app1.appraisal_period_id = app2.appraisal_period_id
WHERE period_desc < (SELECT period_desc FROM appraisal_period
WHERE Is_Default=1) ORDER BY period_desc ASC;

IF @v_to_year < (@v_FROM_year - 5)


BEGIN
SET @v_to_year = @v_FROM_year - 5;
END
END

SET @v_year_flag = @v_to_year

CREATE TABLE #Years (VALUE INT);

WHILE @v_year_flag <= @v_FROM_year


BEGIN
INSERT INTO #Years VALUES (@v_year_flag)
SET @v_year_flag = @v_year_flag + 1;
END;

-- Check if Admin or Not

SELECT @v_IfAdmin = CASE WHEN EXISTS (


SELECT T1.pms_role_id FROM emp_to_pms_role T1, pms_role T2,
employee_new T3
WHERE T1.pms_role_id = T2.pms_role_id
AND T1.emp_id = T3.emp_id
AND T1.pms_role_id = 1001
AND T3.emp_id = @v_uid
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END

DECLARE @m_from_year INT;


DECLARE @s_from_year INT;
SET @m_from_year=@p_from_year;
SET @s_from_year=@p_from_year;
DECLARE @v_appraisal_period_id INT;
DECLARE @v_current_appraisal_period_id INT;
DECLARE @v_self_emp_id VARCHAR(10);
SET @v_current_appraisal_period_id=0;

DECLARE @v_employee_info_query VARCHAR(1000);


SET @v_employee_info_query='';
SELECT @v_self_emp_id=emp_id FROM employee_new WHERE email=@v_uid;

WHILE @m_from_year<=@p_to_year
BEGIN
DECLARE @TableName VARCHAR(100) = 'temp_'+CAST (@m_from_year AS
VARCHAR(4))

--IF OBJECT_ID(@TableName) IS NOT NULL


-- EXEC ('DROP Table ' + @TableName)

SET @m_from_year=@m_from_year+1;
END;

--SET @sql= 'DROP TABLE ' + 'temp_'+CAST (@p_to_year AS VARCHAR(4))


--EXEC(@sql);
--SET @sql= 'DROP TABLE ' + 'temp_'+CAST (@p_from_year AS VARCHAR(4))
--EXEC(@sql);
--DECLARE @DynSql nvarchar(max) = 'DROP TABLE ' + QUOTENAME('temp_'+CAST
(@p_to_year AS VARCHAR(4))+');

WHILE @s_from_year<=@p_to_year
BEGIN
SELECT @v_appraisal_period_id=appraisal_period_id FROM
appraisal_period WHERE period_desc=@s_from_year;
SELECT @v_current_appraisal_period_id=appraisal_period_id FROM
appraisal_period WHERE Is_Default=1;

IF EXISTS (SELECT pa_rating_id FROM pa_overall_rating_Admin WHERE


appraisal_period_id=@v_appraisal_period_id)
BEGIN
SET @v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,r.pa_rating_id from
employee_yearwise e,pa_overall_rating_Admin r,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in('+@v_self_emp_id+') AND
appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
AND isactive='+@v_isActive+'
group by appraisal_period_id,emp_id)p where
e.emp_id=p.emp_id AND e.emp_id=r.emp_id
AND e.appraisal_period_id=p.appraisal_period_id
AND e.CreatedDate= p.date
AND p.appraisal_period_id=r.appraisal_period_id)
emp_info,';

END
ELSE
BEGIN
SET @v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,0 AS pa_rating_id from
employee_yearwise e ,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in('+@v_self_emp_id+') AND
appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
AND isactive='+@v_isActive+'
group by appraisal_period_id,emp_id)p where
e.emp_id=p.emp_id
AND e.appraisal_period_id=p.appraisal_period_id
AND e.CreatedDate= p.date) emp_info,'
END

--SELECT @v_employee_info_query;
IF (@v_is_self = 1 OR @v_is_self=null)
BEGIN
-- SELECT 'i am in self'
-- Historical data for self

IF EXISTS (SELECT pa_rating_id FROM


pa_overall_rating_Admin WHERE appraisal_period_id=@v_appraisal_period_id)
BEGIN
--SELECT 'i am in self 1'
/*SET @v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,r.pa_rating_id from
employee_yearwise e,pa_overall_rating_Admin r,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in('+@v_self_emp_id+') AND
appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
AND isactive='+@v_isActive+'
group by appraisal_period_id,emp_id)p
where e.emp_id=p.emp_id AND e.emp_id=r.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date
AND
p.appraisal_period_id=r.appraisal_period_id) emp_info,';*/

SET @v_employee_info_query='(SELECT
grade_description, designation, e.apprId, e.emp_id, r.pa_rating_id,
pm.pa_rating_desc FROM dbo.getAllEmployeeInfoByApprId('+CAST(@v_appraisal_period_id
AS VARCHAR(3))+') e LEFT JOIN pa_overall_rating_Admin r ON e.emp_id = r.emp_id AND
e.apprId=r.appraisal_period_id LEFT JOIN pa_rating_mstr pm ON r.pa_rating_id=
pm.pa_rating_id WHERE e.emp_id= '+ @v_self_emp_id +' AND
e.IsActive='+@v_isActive+') emp_info,';
END
ELSE
BEGIN
--SELECT 'i am in self 2'
/*SET
@v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,0 AS pa_rating_id from
employee_yearwise e ,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in('+@v_self_emp_id+')
AND appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
AND isactive='+@v_isActive+'
group by
appraisal_period_id,emp_id)p where e.emp_id=p.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date)
emp_info,'*/

SET
@v_employee_info_query='(SELECT grade_description, designation, apprId, emp_id, 0
AS pa_rating_id, NULL AS pa_rating_desc FROM
dbo.getAllEmployeeInfoByApprId('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
WHERE e.emp_id= '+ @v_self_emp_id +' IsActive='+@v_isActive+') emp_info,';
END

-- SELECT 'i am in self 3'


/*SET @sql='SELECT current_info.*,(SELECT
grade_description from employee_grade_mstr where grade_id=emp_info.grade_id) AS
grade_id,
(SELECT designation from employee_designation_mstr
where designation_id=emp_info.designation_id) as deg_id,
(SELECT pa_rating_desc from pa_rating_mstr where
pa_rating_id=emp_info.pa_rating_id) as pa_rating_id,sal_info.RevisedSalary,

sal_info.MidyearPromotion,sal_info.MidyearCorrection,sal_info.RetentionBonus,
CONVERT(VARCHAR(11),sal_info.Retention_Start_Date,
113) as Paidon,CONVERT(VARCHAR(11),sal_info.Retention_End_Date, 113) as ValidTill
into temp_'+CAST (@s_from_year AS VARCHAR(4))+' FROM '*/

SET @sql='SELECT current_info.*,


emp_info.grade_description AS grade_id, emp_info.designation as deg_id,
emp_info.pa_rating_desc as pa_rating_id,sal_info.RevisedSalary,
sal_info.MidyearPromotion,sal_info.MidyearCorrection,sal_info.RetentionBonus,

CONVERT(VARCHAR(11),sal_info.Retention_Start_Date, 113) as
Paidon,CONVERT(VARCHAR(11),sal_info.Retention_End_Date, 113) as ValidTill into
temp_'+CAST (@s_from_year AS VARCHAR(4))+' FROM '
--
CONVERT(VARCHAR(11),sal_info.Retention_Start_Date, 113) as
Paidon,CONVERT(VARCHAR(11),sal_info.Retention_End_Date, 113) as ValidTill into
temp_'+CAST (@s_from_year AS VARCHAR(4))+' FROM '

SET @sql=@sql+ @v_employee_info_query;

SET @sql=@sql+'(SELECT
emp_id,MAX(retention_start_Date) AS retention_start_Date,MAX(retention_end_Date) AS
retention_end_Date,
MAX(revisedsalary) AS
revisedsalary,MAX(midyearpromotion) AS midyearpromotion,
MAX(midyearcorrection) AS
midyearcorrection,MAX(retentionbonus) AS retentionbonus,appraisal_period_id FROM
(
SELECT * FROM (SELECT emp_id, ISNULL(ISNULL(newCTC,
CTC),0) AS amount,
status,appraisal_period_id,Retention_Start_Date,Retention_End_Date FROM
(SELECT cys.emp_id,
CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL) as
amount , status, cys.appraisal_period_id, cys.Retention_Start_Date,
cys.Retention_End_Date, csf.head_name
FROM comp_yearwise_salary cys, comp_salary_fileds csf
WHERE cys.status in(''RevisedSalary'', ''MidyearPromotion'', ''MidyearCorrection'')
AND emp_id = '+@v_self_emp_id+' AND
cys.salary_field_id=csf.ID AND cys.appraisal_period_id =
'+CAST(@v_appraisal_period_id AS VARCHAR(3))+')s PIVOT (MAX(amount) FOR head_name
IN (CTC, newCTC)
) src1

UNION
SELECT * from (SELECT
emp_id,CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL)
as amount,status,appraisal_period_id,Retention_Start_Date,
Retention_End_Date FROM comp_yearwise_salary
WHERE
status IN(''RetentionBonus'')
AND emp_id ='+@v_self_emp_id+'
AND salary_field_id=(SELECT id FROM
comp_salary_fileds WHERE appraisal_period_id='+CAST(@v_appraisal_period_id AS
VARCHAR(3))+' AND head_name=''RetentionAmount'')
) src2) src

pivot
(
MAX(amount) FOR status in
(RevisedSalary,MidyearPromotion,MidyearCorrection,RetentionBonus)
) piv) a GROUP BY emp_id,appraisal_period_id)
sal_info,
(SELECT en.emp_id,en.emp_name,ey.IsActive,
(SELECT function_name from employee_function_mstr
where function_id=ey.function_id) as function_id,
(SELECT designation from employee_designation_mstr
where designation_id=ey.designation_id) as designation_id,

en.DOJ_formatted,DATEDIFF(year,en.DOJ_formatted,getdate()) as Tenure from


employee_new en,employee_yearwise ey,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise ey
where appraisal_period_id in
('+CAST(@v_current_appraisal_period_id AS VARCHAR(5))+') AND
isactive='+@v_isActive+' AND
emp_id='+@v_self_emp_id+' group by appraisal_period_id,emp_id)e
where ey.emp_id=en.emp_id AND ey.CreatedDate=e.date
AND e.appraisal_period_id=ey.appraisal_period_id AND e.emp_id=ey.emp_id)
current_info
where emp_info.emp_id=sal_info.emp_id AND
emp_info.apprId=sal_info.appraisal_period_id
AND emp_info.emp_id=current_info.emp_id';
--SELECT 'SQL 1'
--SELECT @sql;
EXEC (@sql);
END
ELSE
BEGIN
IF (@v_IfAdmin=1)
BEGIN

--SELECT 'IN If Admin'


IF EXISTS (SELECT TOP 1 pa_rating_id FROM
pa_overall_rating_Admin WHERE appraisal_period_id=@v_appraisal_period_id)
BEGIN
--SELECT 'if admin 1'
--Commented on 27-10-2020 by
Prasanta
/*SET
@v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,r.pa_rating_id from
employee_yearwise e,pa_overall_rating_Admin r,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in(SELECT emp_id from
employee_new) AND isactive='+@v_isActive+' AND
appraisal_period_id in
('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
group by
appraisal_period_id,emp_id)p where e.emp_id=p.emp_id AND e.emp_id=r.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date
AND
p.appraisal_period_id=r.appraisal_period_id) emp_info,';*/

SET @v_employee_info_query='(SELECT
grade_description, designation, e.apprId, e.emp_id, r.pa_rating_id,
pm.pa_rating_desc FROM dbo.getAllEmployeeInfoByApprId('+CAST(@v_appraisal_period_id
AS VARCHAR(3))+') e LEFT JOIN pa_overall_rating_Admin r ON e.emp_id = r.emp_id AND
e.apprId=r.appraisal_period_id LEFT JOIN pa_rating_mstr pm ON r.pa_rating_id=
pm.pa_rating_id WHERE e.IsActive='+@v_isActive+') emp_info,';

END
ELSE
BEGIN
--SELECT 'In Else';

--Commented on 27-10-2020 by
Prasanta
/*SET
@v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,0 AS pa_rating_id from
employee_yearwise e,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in(
SELECT distinct emp_id from
(SELECT max(eee.createddate) as date, eee.appraisal_period_id, eee.emp_id FROM
employee_yearwise eee,
(SELECT max(createddate) as
crdate,emp_id FROM employee_yearwise WHERE
appraisal_period_id in
('+CAST(@v_appraisal_period_id AS VARCHAR(3))+') GROUP BY emp_id) pp WHERE
eee.CreatedDate =pp.crdate AND eee.emp_id=pp.emp_id
AND eee.appraisal_period_id
in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+') AND eee.isActive
='+@v_isActive+' group by eee.createddate,
eee.appraisal_period_id,
eee.emp_id) k
) AND
isactive='+@v_isActive+' AND
appraisal_period_id in
('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
group by
appraisal_period_id,emp_id)p where e.emp_id=p.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date)
emp_info,'*/

SET
@v_employee_info_query='(SELECT grade_description, designation, apprId, emp_id, 0
AS pa_rating_id, NULL AS pa_rating_desc FROM
dbo.getAllEmployeeInfoByApprId('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
WHERE IsActive='+@v_isActive+') emp_info,';
END

-- Historical data for Admin


SET @sql='SELECT current_info.*,
emp_info.grade_description AS grade_id, emp_info.designation as deg_id,
emp_info.pa_rating_desc as pa_rating_id,sal_info.RevisedSalary,
sal_info.MidyearPromotion,sal_info.MidyearCorrection,sal_info.RetentionBonus,

CONVERT(VARCHAR(11),sal_info.Retention_Start_Date, 113) as
Paidon,CONVERT(VARCHAR(11),sal_info.Retention_End_Date, 113) as ValidTill into
temp_'+CAST (@s_from_year AS VARCHAR(4))+' FROM '
SET @sql=@sql+ @v_employee_info_query;

SET @sql=@sql+'(SELECT
emp_id,MAX(retention_start_Date) AS retention_start_Date,MAX(retention_end_Date) AS
retention_end_Date,
MAX(revisedsalary) AS
revisedsalary,MAX(midyearpromotion) AS midyearpromotion,
MAX(midyearcorrection) AS
midyearcorrection,MAX(retentionbonus) AS retentionbonus,appraisal_period_id FROM
(
SELECT * FROM (SELECT emp_id,
ISNULL(ISNULL(newCTC, CTC),0) AS amount, status,appraisal_period_id,
Retention_Start_Date,Retention_End_Date FROM
(SELECT cys.emp_id,
CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL) as
amount, status, cys.appraisal_period_id, cys.Retention_Start_Date,
cys.Retention_End_Date, csf.head_name
FROM comp_yearwise_salary cys,
comp_salary_fileds csf WHERE cys.status in(''RevisedSalary'',
''MidyearPromotion'', ''MidyearCorrection'')
AND cys.salary_field_id=csf.ID AND
cys.appraisal_period_id = '+CAST(@v_appraisal_period_id AS VARCHAR(3))+')s PIVOT
(MAX(amount) FOR head_name IN (CTC, newCTC)
) src1

UNION
SELECT * FROM (SELECT
emp_id,CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL)
as amount,status,appraisal_period_id,Retention_Start_Date,
Retention_End_Date from
comp_yearwise_salary where
status IN(''RetentionBonus'')
AND salary_field_id=(SELECT id FROM
comp_salary_fileds WHERE appraisal_period_id='+CAST(@v_appraisal_period_id AS
VARCHAR(3))+' AND head_name=''RetentionAmount'')
) src2) src

pivot
(
max(amount) for status in
(RevisedSalary,MidyearPromotion,MidyearCorrection,RetentionBonus)
) piv) a GROUP BY
emp_id,appraisal_period_id) sal_info,
(SELECT emp_id, emp_name, isActive,
function_name AS function_id, designation AS designation_id, DOJ_formatted,
DATEDIFF(year, DOJ_formatted, getdate()) as Tenure FROM
dbo.getAllEmployeeInfoByApprId('+CAST(@v_current_appraisal_period_id AS VARCHAR(5))
+') WHERE isActive='+@v_isActive+') current_info
/*(SELECT
en.emp_id,en.emp_name,ey.IsActive,
(SELECT function_name from
employee_function_mstr where function_id=ey.function_id) as function_id,
(SELECT designation from
employee_designation_mstr where designation_id=ey.designation_id) as
designation_id,

en.DOJ_formatted,DATEDIFF(year,en.DOJ_formatted,getdate()) as Tenure from


employee_new en,employee_yearwise ey,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise ey
where isactive='+@v_isActive+' AND
appraisal_period_id in ('+CAST(@v_current_appraisal_period_id AS VARCHAR(5))+')
group by appraisal_period_id,emp_id)e
where ey.emp_id=en.emp_id AND
ey.CreatedDate=e.date AND e.appraisal_period_id=ey.appraisal_period_id AND
e.emp_id=ey.emp_id) current_info*/

where emp_info.emp_id=sal_info.emp_id
AND emp_info.apprId=sal_info.appraisal_period_id
AND
emp_info.emp_id=current_info.emp_id';
-- select @sql;
--EXEC
[sp_get_historical_compensation_dashboard_excel_data] '[email protected]_', 2021,
2022, null, null
--SELECT 'Admin query '
--SELECT @sql;
EXEC (@sql);
END
ELSE
BEGIN
-- Historical data for LT

IF EXISTS (SELECT pa_rating_id FROM


pa_overall_rating_Admin WHERE appraisal_period_id=@v_appraisal_period_id)
BEGIN
SET @v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,r.pa_rating_id from
employee_yearwise e,pa_overall_rating_Admin r,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in(SELECT emp_id FROM
employee_yearwise WHERE Functonal_LT='+@v_self_emp_id+')
AND isactive='+@v_isActive+' AND
appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
group by
appraisal_period_id,emp_id)p where e.emp_id=p.emp_id AND e.emp_id=r.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date
AND
p.appraisal_period_id=r.appraisal_period_id) emp_info,';
END
ELSE
BEGIN
SET
@v_employee_info_query='(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,0 AS pa_rating_id from
employee_yearwise e,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in(SELECT emp_id
FROM employee_yearwise WHERE Functonal_LT='+@v_self_emp_id+')
AND
isactive='+@v_isActive+' AND appraisal_period_id in
('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
group by
appraisal_period_id,emp_id)p where e.emp_id=p.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date) emp_info,'
END

SET @sql='SELECT current_info.*,(SELECT


grade_description from employee_grade_mstr where grade_id=emp_info.grade_id) AS
grade_id,
(SELECT designation from
employee_designation_mstr where designation_id=emp_info.designation_id) as deg_id,
(SELECT pa_rating_desc from
pa_rating_mstr where pa_rating_id=emp_info.pa_rating_id) as
pa_rating_id,sal_info.RevisedSalary,

sal_info.MidyearPromotion,sal_info.MidyearCorrection,sal_info.RetentionBonus,

CONVERT(VARCHAR(11),sal_info.Retention_Start_Date, 113) as
Paidon,CONVERT(VARCHAR(11),sal_info.Retention_End_Date, 113) as ValidTill into
temp_'+CAST (@s_from_year AS VARCHAR(4))+' FROM '
SET @sql=@sql+ @v_employee_info_query;
/*
(SELECT
grade_id,designation_id,e.appraisal_period_id,e.emp_id,r.pa_rating_id from
employee_yearwise e,pa_overall_rating_Admin r,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise
where emp_id in(SELECT emp_id FROM
employee_yearwise WHERE Functonal_LT='+@v_self_emp_id+')
AND isactive='+@v_isActive+' AND
appraisal_period_id in ('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
group by appraisal_period_id,emp_id)p
where e.emp_id=p.emp_id AND e.emp_id=r.emp_id
AND
e.appraisal_period_id=p.appraisal_period_id AND e.CreatedDate= p.date
AND
p.appraisal_period_id=r.appraisal_period_id) emp_info,
*/
SET @sql=@sql+'(SELECT
emp_id,MAX(retention_start_Date) AS retention_start_Date,MAX(retention_end_Date) AS
retention_end_Date,
MAX(revisedsalary) AS
revisedsalary,MAX(midyearpromotion) AS midyearpromotion,
MAX(midyearcorrection) AS
midyearcorrection,MAX(retentionbonus) AS retentionbonus,appraisal_period_id FROM
(
SELECT * FROM (SELECT emp_id,
ISNULL(ISNULL(newCTC, CTC),0) AS amount, status,appraisal_period_id,
Retention_Start_Date,Retention_End_Date FROM
(SELECT cys.emp_id,
CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL) as
amount, status, cys.appraisal_period_id, cys.Retention_Start_Date,
cys.Retention_End_Date, csf.head_name
FROM comp_yearwise_salary cys,
comp_salary_fileds csf WHERE cys.status in(''RevisedSalary'',
''MidyearPromotion'', ''MidyearCorrection'')
AND emp_id IN(SELECT emp_id FROM
dbo.getAllEmployeeInfoByApprId('+CAST(@v_appraisal_period_id AS VARCHAR(3))+')
WHERE functional_lt_id='+@v_self_emp_id+' AND isActive='+ @v_isActive +') AND
cys.salary_field_id=csf.ID AND cys.appraisal_period_id =
'+CAST(@v_appraisal_period_id AS VARCHAR(3))+')s PIVOT (MAX(amount) FOR head_name
IN (CTC, newCTC)
) src1

UNION
SELECT * FROM (SELECT
emp_id,CAST(dbo.Decrypt(CONVERT(VARBINARY(max), ISNULL(amount, 0), 1) ) AS DECIMAL)
as amount,status,appraisal_period_id,Retention_Start_Date,
Retention_End_Date FROM
comp_yearwise_salary where
status IN(''RetentionBonus'')
AND emp_id IN(SELECT emp_id FROM
employee_yearwise WHERE Functonal_LT='+@v_self_emp_id+')
AND salary_field_id=(SELECT id FROM
comp_salary_fileds WHERE appraisal_period_id='+CAST(@v_appraisal_period_id AS
VARCHAR(3))+' AND head_name=''RetentionAmount'')
) src2) src

pivot
(
max(amount) for status in
(RevisedSalary,MidyearPromotion,MidyearCorrection,RetentionBonus)
) piv) a GROUP BY
emp_id,appraisal_period_id) sal_info,
(SELECT
en.emp_id,en.emp_name,ey.IsActive,
(SELECT function_name from
employee_function_mstr where function_id=ey.function_id) as function_id,
(SELECT designation from
employee_designation_mstr where designation_id=ey.designation_id) as
designation_id,

en.DOJ_formatted,DATEDIFF(year,en.DOJ_formatted,getdate()) as Tenure from


employee_new en,employee_yearwise ey,
(SELECT max(createddate) as
date,appraisal_period_id,emp_id from employee_yearwise ey
where appraisal_period_id in
('+CAST(@v_current_appraisal_period_id AS VARCHAR(5))+') AND
isactive='+@v_isActive+' AND emp_id
IN (SELECT emp_id FROM employee_yearwise
WHERE Functonal_LT='+@v_self_emp_id+') group by appraisal_period_id,emp_id)e
where ey.emp_id=en.emp_id AND
ey.CreatedDate=e.date AND e.appraisal_period_id=ey.appraisal_period_id AND
e.emp_id=ey.emp_id) current_info
where emp_info.emp_id=sal_info.emp_id
AND emp_info.appraisal_period_id=sal_info.appraisal_period_id
AND
emp_info.emp_id=current_info.emp_id';
--SELECT 'Last query';
--SELECT @sql;
--EXEC (@sql);

END

END

SET @s_from_year=@s_from_year+1;
END
--SELECT @sql;

DECLARE @iCount INT;


SET @iCount=0;
DECLARE @column_grade VARCHAR(500);
DECLARE @column_rating VARCHAR(500);
DECLARE @column_designation VARCHAR(500);
DECLARE @table_name VARCHAR(500);
DECLARE @where_clause VARCHAR(500);
DECLARE @column_revised_salary VARCHAR(500);
DECLARE @column_midyear_promotion VARCHAR(500);
DECLARE @column_midyear_correction VARCHAR(500);
DECLARE @column_retention_bonus VARCHAR(1000);
DECLARE @column_paidon VARCHAR(500);
DECLARE @column_validtill VARCHAR(500);
DECLARE @column_employee_info VARCHAR(500);

WHILE @p_FROM_year<=@p_to_year
BEGIN

-- SELECT @v_toYearHeading;

--SELECT 'within loop'


if (@iCount=0)
BEGIN
--SELECT 'i am in count 0'
SET @column_employee_info='DISTINCT REPLICATE(''0'',5-
LEN(RTRIM(p.emp_id))) + RTRIM(p.emp_id) AS ''E.Code'',p.emp_name As Name,CASE WHEN
p.isActive=1 THEN ''Active'' ELSE ''Not Active'' END AS ''Status'''

--SET @column_grade='p.grade_id AS
Grade_'+CAST(@p_FROM_year AS VARCHAR(4))
SET @column_employee_info=@column_employee_info+
',p.function_id AS ''Function'',p.designation_id AS
''Designation'',CONVERT(VARCHAR(11), p.doj_formatted, 113) AS DOJ,p.tenure AS
''Tenure (Years)'''
SET @column_grade='p.grade_id AS ''Grade
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_designation='p.deg_id AS ''Designation
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_rating='p.pa_rating_id AS ''Rating
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_revised_salary='CAST(p.RevisedSalary AS INT) AS
''CTC (Feb) '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_promotion='ISNULL(CAST(p.MidyearPromotion AS INT),0) AS ''OOC
Promotion '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_correction='ISNULL(CAST(p.MidyearCorrection AS INT),0) AS ''OOC
Correction '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_retention_bonus='ISNULL(CAST(p.RetentionBonus
AS INT),0) AS ''RetentionBonus '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_paidon='ISNULL(CONVERT(VARCHAR(11), p.Paidon,
113),''N/A'') AS ''PaidOn '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_validtill='ISNULL(CONVERT(VARCHAR(11),
p.ValidTill, 113),''N/A'') AS ''ValidTill '+CAST(@v_toYearHeading AS VARCHAR(4))
+''''
SET @table_name='temp_'+CAST (@p_FROM_year AS VARCHAR(4))+'
p'
END
if (@iCount=1)
BEGIN
--SELECT 'i am in count 1'
SET @column_grade=@column_grade+',q.grade_id AS ''Grade
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_designation=@column_designation+',q.deg_id AS
''Designation '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_rating=@column_rating+',q.pa_rating_id AS
''Rating '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_revised_salary=@column_revised_salary+',CAST(q.RevisedSalary AS INT) AS
''CTC (Feb) '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_promotion=@column_midyear_promotion+',ISNULL(CAST(q.MidyearPromotio
n AS INT),0) AS ''OOC Promotion '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_correction=@column_midyear_correction+',ISNULL(CAST(q.MidyearCorrec
tion AS INT),0) AS ''OOC Correction '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_retention_bonus=@column_retention_bonus+',ISNULL(CAST(q.RetentionBonus AS
INT),0) AS ''RetentionBonus '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_paidon=@column_paidon+',ISNULL(CONVERT(VARCHAR(11), q.Paidon, 113),''N/A'')
AS ''PaidOn '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_validtill=@column_validtill+',ISNULL(CONVERT(VARCHAR(11), q.ValidTill,
113),''N/A'') AS ''ValidTill '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @table_name=@table_name +',temp_'+CAST (@p_FROM_year AS
VARCHAR(4))+' q'
-- SET @where_clause='p.emp_id=q.emp_id'
-- SELECT @v_toYear;
SET @where_clause=' FROM '+' temp_'+CAST (@v_toYear AS
VARCHAR(4))+' p left join '+' temp_'+CAST ((@v_toYear - 1) AS VARCHAR(4))+' q on
q.emp_id = p.emp_id '
-- SELECT @where_clause;
END
if (@iCount=2)
BEGIN
--SELECT 'i am in count 2'
SET @column_grade=@column_grade+',r.grade_id AS ''Grade
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_designation=@column_designation+',r.deg_id AS
''Designation '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_rating=@column_rating+',r.pa_rating_id AS
''Rating '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_revised_salary=@column_revised_salary+',CAST(r.RevisedSalary AS INT) AS
''CTC (Feb) '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_promotion=@column_midyear_promotion+',ISNULL(CAST(r.MidyearPromotio
n AS INT),0) AS ''OOC Promotion '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_correction=@column_midyear_correction+',ISNULL(CAST(r.MidyearCorrec
tion AS INT),0) AS ''OOC Correction '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_retention_bonus=@column_retention_bonus+',ISNULL(CAST(r.RetentionBonus AS
INT),0) AS ''RetentionBonus '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_paidon=@column_paidon+',ISNULL(CONVERT(VARCHAR(11), r.Paidon, 13),''N/A'')
As ''PaidOn '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_validtill=@column_validtill+',ISNULL(CONVERT(VARCHAR(11), r.ValidTill,
113),''N/A'') As ''ValidTill '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @table_name=@table_name +',temp_'+CAST (@p_FROM_year AS
VARCHAR(4))+' r'
-- SET @where_clause=@where_clause+' AND
p.emp_id=r.emp_id'
-- SET @where_clause=' FROM temp_2017 r left join temp_2016
q on r.emp_id = q.emp_id left join temp_2015 p on q.emp_id = p.emp_id'
SET @where_clause=@where_clause+' left join temp_'+CAST
((@v_toYear - 1) AS VARCHAR(4))+' r on q.emp_id = r.emp_id '
-- SELECT @where_clause;
END
if (@iCount=3)
BEGIN
--SELECT 'i am in count 3'
SET @column_grade=@column_grade+',s.grade_id AS ''Grade
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_designation=@column_designation+',s.deg_id AS
''Designation '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_rating=@column_rating+',s.pa_rating_id AS
''Rating '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_revised_salary=@column_revised_salary+',CAST(s.RevisedSalary AS INT) AS
''CTC (Feb) '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_promotion=@column_midyear_promotion+',ISNULL(CAST(s.MidyearPromotio
n AS INT),0) AS ''OOC Promotion '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_correction=@column_midyear_correction+',ISNULL(CAST(s.MidyearCorrec
tion AS INT),0) AS ''OOC Correction '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_retention_bonus=@column_retention_bonus+',ISNULL(CAST(s.RetentionBonus AS
INT),0) AS ''RetentionBonus '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_paidon=@column_paidon+',ISNULL(CONVERT(VARCHAR(11), s.Paidon, 113),''N/A'')
As ''PaidOn '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_validtill=@column_validtill+',ISNULL(CONVERT(VARCHAR(11), s.ValidTill,
113),''N/A'') As ''ValidTill '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @table_name=@table_name +',temp_'+CAST (@p_FROM_year AS
VARCHAR(4))+' s'
-- SET @where_clause=@where_clause+' AND
p.emp_id=s.emp_id'
-- SET @where_clause=' FROM temp_2018 s left join temp_2017
r on s.emp_id = r.emp_id left join temp_2016 q on r.emp_id = q.emp_id left join
temp_2015 p on q.emp_id = p.emp_id'
SET @where_clause=@where_clause+' left join temp_'+CAST
((@v_toYear - 1) AS VARCHAR(4))+' s on r.emp_id = s.emp_id '
-- SELECT @where_clause;
END
if (@iCount=4)
BEGIN
--SELECT 'i am in count 4'
SET @column_grade=@column_grade+',t.grade_id AS ''Grade
'+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_designation=@column_designation+',t.deg_id AS
''Designation '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @column_rating=@column_rating+',t.pa_rating_id AS
''Rating '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_revised_salary=@column_revised_salary+',CAST(t.RevisedSalary AS INT) AS
''CTC (Feb) '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_promotion=@column_midyear_promotion+',ISNULL(CAST(t.MidyearPromotio
n AS INT),0) AS ''OOC Promotion '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_midyear_correction=@column_midyear_correction+',ISNULL(CAST(t.MidyearCorrec
tion AS INT),0) AS ''OOC Correction '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_retention_bonus=@column_retention_bonus+',ISNULL(CAST(t.RetentionBonus AS
INT) ,0) AS ''RetentionBonus '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_paidon=@column_paidon+',ISNULL(CONVERT(VARCHAR(11), t.Paidon, 113),''N/A'')
As ''PaidOn '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET
@column_validtill=@column_validtill+',ISNULL(CONVERT(VARCHAR(11), t.ValidTill,
113),''N/A'') AS ''ValidTill '+CAST(@v_toYearHeading AS VARCHAR(4))+''''
SET @table_name=@table_name +',temp_'+CAST (@p_FROM_year AS
VARCHAR(4))+' t'
-- SET @where_clause=@where_clause+' AND
p.emp_id=t.emp_id'
-- SET @where_clause=' FROM temp_2019 t left join temp_2018
s on t.emp_id = s.emp_id left join temp_2017 r on s.emp_id = r.emp_id left join
temp_2016 q on r.emp_id = q.emp_id left join temp_2015 p on q.emp_id = p.emp_id'
SET @where_clause=@where_clause+' left join temp_'+CAST
((@v_toYear - 1) AS VARCHAR(4))+' t on s.emp_id = t.emp_id '
-- SELECT @where_clause;
END

SET @v_toYearHeading = @v_toYearHeading - 1;


SET @p_FROM_year=@p_FROM_year+1;
SET @v_toYear = @v_toYear-1;
set @iCount=@iCount+1;
END;

--SELECT @sql;
IF (@v_FROM_year=@v_to_year)
BEGIN
SET @sql='SELECT
'+@column_employee_info+','+@column_grade+','+@column_designation+','+@column_ratin
g+','+@column_revised_salary+','+@column_midyear_promotion+','

+@column_midyear_correction+','+@column_retention_bonus+','+@column_paidon+','+@col
umn_validtill+' FROM '+@table_name;
END
ELSE
BEGIN

SET @sql='SELECT
'+@column_employee_info+','+@column_grade+','+@column_designation+','+@column_ratin
g+','+@column_revised_salary+','+@column_midyear_promotion+','
--
+@column_midyear_correction+','+@column_retention_bonus+','+@column_paidon+','+@col
umn_validtill+' FROM '+@table_name+' WHERE '+ @where_clause

+@column_midyear_correction+','+@column_retention_bonus+','+@column_paidon+','+@col
umn_validtill+' '+ @where_clause

END
--SELECT 'Line 576';
--SELECT @sql;
EXEC (@sql);

SET @m_from_year=@p_from_year;
WHILE @m_from_year<=@p_to_year
BEGIN
SET @TableName = 'temp_'+CAST (@m_from_year AS VARCHAR(4))

--IF OBJECT_ID(@TableName) IS NOT NULL


-- EXEC ('DROP Table ' + @TableName)

SET @m_from_year=@m_from_year+1;
END;

END

You might also like