34,590
社区成员
发帖
与我相关
我的任务
分享
with 表1(姓名,日期,出勤) as(
select '张三','2015-04-01','1'
union all
select '张三','2015-04-02','0.5'
union all
select '张三','2015-04-03','1.5'
)
select * from 表1
pivot(max(出勤) for 日期 in([2015-04-01],[2015-04-02],[2015-04-03])) t
--动态
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL='SELECT 姓名'
SELECT @SQL=@SQL+',ISNULL(SUM(CASE WHEN 日期='''+CONVERT(VARCHAR(10),日期,120)+''' THEN 出勤 END),0)['+CONVERT(VARCHAR(10),日期,120)+']'
FROM TB GROUP BY 日期
SET @SQL=@SQL+'FROM TB GROUP BY 姓名'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT 姓名
,ISNULL(SUM(CASE WHEN 日期='2015-4-1' THEN 出勤 END),0)[2015-4-1]
,ISNULL(SUM(CASE WHEN 日期='2015-4-2' THEN 出勤 END),0)[2015-4-2]
,ISNULL(SUM(CASE WHEN 日期='2015-4-3' THEN 出勤 END),0)[2015-4-3]
FROM TB GROUP BY 姓名