K K Shah Ответов: 1

Не удается получить требуемый вывод во время выполнения процедуры


Когда я выполняю процедуру то что я получаю на выходе выглядит следующим образом -

EmployeeCode  Additions      Deductions   AdditionsAmount  DeductionsAmount
M1010         ALLOWANCE                     960.00               0
M1010         BASIC SALARY                  1390.00              0
M1010         OT1                           171.35               0
M1010                        OTHERS-DED     0.00                 1800.00


требуемая производительность -

EmployeeCode  Additions      Deductions   AdditionsAmount  DeductionsAmount
M1010         ALLOWANCE      OTHERS-DED     960.00               1800.00
M1010         BASIC SALARY                  1390.00              0
M1010         OT1                           171.35               0


Любая помощь будет оценена по достоинству.

Что я уже пробовал:

ALTER PROC [dbo].[PROC_EMPLOYEE_PAY_SLIP]                          
@EmplopyeeCode varchar(100),
@MonthName varchar(50),
@Year Float                             
As                                                
Begin                                            
 SELECT ISNULL(HR_EmployeeMaster.em_EmplopyeeCode,'') As EmplopyeeCode,
  ISNULL(CASE WHEN fa_ComponentMaster.Cm_ADTag = 'A' THEN fa_ComponentMaster.Cm_Name ELSE '' END,'') As Additions,
  ISNULL(CASE WHEN fa_ComponentMaster.Cm_ADTag = 'D' THEN fa_ComponentMaster.Cm_Name ELSE '' END,'') As Deductions,
  ISNULL(CASE WHEN fa_ComponentMaster.Cm_ADTag = 'A' THEN Fa_MonthSalary.Ms_Amount ELSE 0 END,0) As AdditionsAmount,
  ISNULL(CASE WHEN fa_ComponentMaster.Cm_ADTag = 'D' THEN Fa_MonthSalary.Ms_Amount ELSE 0 END,0) As DeductionsAmount
   FROM HR_EmployeeMaster                                             
    LEFT JOIN Fa_MonthSalary ON Fa_MonthSalary.ms_EmpCode = @EmplopyeeCode                                                    
    LEFT JOIN Fa_MonthDetails ON Fa_MonthDetails.mo_id = Fa_MonthSalary.Ms_MonCode                                                  
    LEFT JOIN fa_ComponentMaster ON fa_ComponentMaster.cm_code = Fa_MonthSalary.Ms_CompCode                   
  WHERE HR_EmployeeMaster.em_EmplopyeeCode = @EmplopyeeCode AND
		(SELECT CONVERT(CHAR(3), Fa_MonthDetails.mo_name)) = @MonthName AND
		Fa_MonthDetails.mon_year = @Year  
End

MadMyche

Что содержит фактическая таблица? Каковы правила ведения бизнеса?

Santosh kumar Pithani

Сделайте группировку по вашему запросу.В вашем запросе "ISNULL( case condition,") " использует свои средства для извлечения каждой записи, но столбец "fa_ComponentMaster.Cm_ADTag" разбивается на 4 столбца, поэтому вы не можете получить то, что ожидали.

K K Shah

группировка по чему ? .... я пробовал, но это давало ошибку

Santosh kumar Pithani

Покажите мне сообщение об ошибке.

1 Ответов

Рейтинг:
1

Gerry Schmitz

Когда вычеты = "другие-DED", то установите дополнения (столбец) в "надбавку" и сгруппируйте по EmployeeCode и дополнениям.