我已根据天数(1 .... 31)创建了一个适用于员工出勤的枢轴报告,并根据CheckTime显示当前和缺席(P& A)状态。我还想在枢轴报告中定义假日或星期五,并创建一个名为“假日”的表。现在我该怎么做或任何想法实际需要做什么?我尝试加入表并创建结果但失败了。对于枢轴报告,除了节假日之外,一切都将为我完成。
Sample and desired output:
Name Dates
Name - 1 - 2 - 3 - 4
Mr.Erik - P - A - P - H
Output obtained by union all:
Name Dates
Name - 1 - 2 - 3 - 4
Mr.Erik - P - A - P - null
Mr.Erik - null - null - null - H
Sample Code:
SELECT Distinct BadgeNumber, EmployeeFullName, HOLIDAYNAME,
[1] AS '1',
[2] AS '2',
[3] AS '3',
[4] AS '4',
[5] AS '5',
[6] AS '6',
[7] AS '7',
[8] AS '8',
[9] AS '9',
[10] AS '10',
[11] AS '11',
[12] AS '12',
[13] AS '13',
[14] AS '14',
[15] AS '15',
[16] AS '16',
[17] AS '17',
[18] AS '18',
[19] AS '19',
[20] AS '20',
[21] AS '21',
[22] AS '22',
[23] AS '23',
[24] AS '24',
[25] AS '25',
[26] AS '26',
[27] AS '27',
[28] AS '28',
[29] AS '29',
[30] AS '30',
[31] AS '31'
FROM
(Select Distinct Day(CHECKTIME) as DAY,CHECKTIME, HOLIDAYNAME, BadgeNumber, EmployeeFullName from empCheckInOut inner join SMEmployee on SMEmployee.EmployeeID = empCheckInOut.USERID inner join SMHoliday on SMHoliday.HOLIDAYDAY = '6' Where datepart(MM, CHECKTIME) = '06')
source
PIVOT
(
count(CHECKTIME)
FOR DAY
IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30],[31])
) AS PivotDay
union all
SELECT Distinct BadgeNumber, EmployeeFullName, HOLIDAYNAME,
[1] AS '1',
[2] AS '2',
[3] AS '3',
[4] AS '4',
[5] AS '5',
[6] AS '6',
[7] AS '7',
[8] AS '8',
[9] AS '9',
[10] AS '10',
[11] AS '11',
[12] AS '12',
[13] AS '13',
[14] AS '14',
[15] AS '15',
[16] AS '16',
[17] AS '17',
[18] AS '18',
[19] AS '19',
[20] AS '20',
[21] AS '21',
[22] AS '22',
[23] AS '23',
[24] AS '24',
[25] AS '25',
[26] AS '26',
[27] AS '27',
[28] AS '28',
[29] AS '29',
[30] AS '30',
[31] AS '31'
FROM
(Select Distinct Day(STARTTIME) as DAY,STARTTIME, HOLIDAYNAME, BadgeNumber, EmployeeFullName from empCheckInOut inner join SMEmployee on SMEmployee.EmployeeID = empCheckInOut.USERID inner join SMHoliday on SMHoliday.HOLIDAYDAY = '6' Where datepart(MM, CHECKTIME) = '06')
source
PIVOT
(
min(STARTTIME)
FOR DAY
IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30],[31])
) AS PivotDay