读书人

初学动态SQL;帮小弟我解释一下这个相对

发布时间: 2012-01-19 20:57:58 作者: rapoo

初学动态SQL;帮我解释一下这个相对简单的动态SQL
数据库里:
DepartName Date1
001 2007-5-1
001 2007-5-2
001 2007-5-3
001 2007-5-4

但在前台的显示效果我却想要

001 2007-5-1 2007-5-2 2007-5-3 2007-5-4
-------------
create table tt(DepartName varchar(10),Date1 datetime)
insert tt select '001 ', '2007-5-1 '
union all select '001 ', '2007-5-2 '
union all select '001 ', '2007-5-3 '
union all select '001 ', '2007-5-4 '

declare @s varchar(8000)
set @s= 'select DepartName '
select @s=@s+ ',max(case DepartName when ' ' '+DepartName+ ' ' ' then Date1 else null end)as [ '+convert(varchar(10),Date1,120)+ '] '
from tt group by DepartName,Date1
select @s=@s+ ' from tt group by DepartName '
select @s
exec(@s)

问题:
1。case DepartName when ' ' '+DepartName+ ' ' ' then Date1 else null end 这个好象是个模式。。。怎么理解?
2。as [ '+convert(varchar(10),Date1,120)+ '] ',中括号是不是为了防止与关键字重名的?

3。还有什么地方要注意的,请大家指点,谢谢了



[解决办法]
好像你的语句并不对

2中括号是括起一个标志符,可以在中括号中间存在空格以及特殊字符

读书人网 >SQL Server

热点推荐