【发布时间】:2013-05-03 13:22:59
【问题描述】:
您好,我有考勤查询,它将使用 PIVOT 功能生成考勤报告
程序如下:
declare @in_date DATETIME
/*Select all the stagign entries related to promotion id and investment type id */
/* also only those staging daat related interface status tracking*/
-- Getting all distinct dates into a temporary table #Dates
SELECT a.date as full_date_of_attendence INTO #Dates
FROM dbo.getFullmonth(@in_date) a
ORDER BY a.date
-- The number of days will be dynamic. So building
-- a comma seperated value string from the dates in #Dates
SELECT @cols = COALESCE(@cols + ',[' + CONVERT(varchar, full_date_of_attendence, 106)
+ ']','[' + CONVERT(varchar, full_date_of_attendence, 106) + ']')
FROM #Dates
ORDER BY full_date_of_attendence
--select @cols
---- Building the query with dynamic dates
SET @qry =
'SELECT * FROM
(SELECT admission_id, attendence_status , date_of_attendence
FROM dbo.tblattendence)emp
PIVOT (MAX(attendence_status) FOR date_of_attendence IN (' + @cols + ')) AS stat'
-- Executing the query
EXEC(@qry)
-- Dropping temporary tables
DROP TABLE #Dates
这是上面查询的输出::
admission_id 01 May 2013 02 May 2013 03 May 2013
2 NULL 1 0
3 NULL 1 1
4 NULL 0 0
5 NULL 0 1
这里我想把列的名字改成01,02,03......
我希望值 1 作为 'P' 和 0 作为 'A'
谁能帮我实现这个目标??
【问题讨论】:
-
使用 Select admission_id 作为 AdmsnId FROM dbo.tblattendence
标签: sql sql-server tsql pivot