Member 12314309 Ответов: 0

Как использовать условие case when в сводном запросе?


у меня есть два запроса ,один-Pivot, а другой-case when, теперь я хочу объединить их ..plz guide

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

SELECT DISTINCT ReportingDate,
SUM(CASE WHEN status = 'P' THEN 1 
    WHEN status = 'HD' THEN 0.5 WHEN status = 'A' THEN 0 END) AS [T.P],   
     SUM(CASE WHEN status = 'A' THEN 1 WHEN status = 'HD' THEN 0.5 END) AS [A],
      SUM(CASE WHEN status = 'P' THEN 1 
    WHEN status = 'HD' THEN 1 WHEN status = 'A' THEN 1 END) AS [TDay ]
     INTO #Dates
FROM EmployeesAttendance
ORDER BY ReportingDate 

DECLARE @cols NVARCHAR(4000)
SELECT  @cols = COALESCE(@cols + ',[' + CONVERT(varchar, DATEPART(DAY, ReportingDate), 112)
				+ ']','[' + CONVERT(varchar,DATEPART(DAY, ReportingDate), 112) + ']')
FROM    #Dates
ORDER BY ReportingDate


DECLARE  @qry NVARCHAR(4000) =
N'SELECT * 
FROM (SElECT EmployeeDetails.EmpID,EmployeeDetails.EmpName,EmployeesAttendance.Status, 
DATEPART(DAY, EmployeesAttendance.ReportingDate)as DDate
FROM EmployeesAttendance  Inner Join EmployeeDetails on EmployeesAttendance.EmpID=EmployeeDetails.Empid )emp
PIVOT (MAX(Status) FOR DDate IN (' + @cols + ')) AS stat 
'
-- Executing the query

EXEC(@qry)

CHill60

Предоставьте примеры данных для таблиц, которые вы использовали, и покажите нам результаты, которые вы ожидаете от "слияния"

Member 12314309

вот моя таблица employeeattendance

Создайте таблицу [dbo].[EmployeesAttendance](
[AttIDS] [int] IDENTITY(1,1) NOT NULL,
[EmpID] [int] NULL,
[ReportingDate] [дата] NULL,
[Дата] [дата] NULL,
[INTIME] [datetime] NULL,
[OUTTIME] [datetime] NULL,
[Часы] [int] NULL,
[Дни] [int] NULL,
[OT] [int] NULL,
[OTAmount] [int] NULL,
[Время] [время](7) ноль,
[Late] [int] NULL,
[Status] [varchar](50) NULL,

вот моя таблица отпусков сотрудников

Создайте таблицу [dbo].[EmpApplication](
[AppNo] [int] IDENTITY(1,1) NOT NULL,
[EmpID] [int] NULL,
[ApplyingDate] [дата] NULL,
[LeavFrom] [дата] NULL,
[LeavTo] [дата] NULL,
[leavDay] [int] NULL,
[LeaveTypeId] [int] NULL,

вот моя сводная таблица регистра посещаемости для отображения cols в строки из таблицы посещаемости сотрудников

Изменить процедуру [dbo].[Pivot_Attendance]
@StartDate Дата,
@Дата Окончания Срока Действия

Как
Начать

Выберите DISTINCT ReportingDate в #Dates
Из EmployeesAttendance
Где (ReportingDate между @StartDate и @Enddate)
Заказ по отчетной дате

Объявить @cols NVARCHAR(4000)
Выберите @седла = КОАЛЕСЦИРУЮТ(@гуара + ',[' + конвертировать(тип varchar, функция datepart(день, ReportingDate), 112)
+ ']','[' + CONVERT(varchar,DATEPART(DAY, ReportingDate), 112) + ']')
От даты #
Заказ по отчетной дате

вот мой окончательный вывод, который я хочу получить в сводной таблице
я хочу этот выход
Дата (будет приходить в соответствии с двумя параметрами даты)

Дата 1,2,3,4,5,6 общий день отсутствия настоящий отпуск
emp 1 p,p,p,p,A,A 6 2 4 0
emp 2 L,P,P,A,L,P 6 1 3 2

пожалуйста, направьте спасибо... @CHILL60

0 Ответов