求解一个SQL问题. declare @s varchar(8000)set @s=''select @s=@s+','+[Empid] from [Employee]print stuff(@s,1,1,'') 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare @s varchar(8000)set @s=''select @s=@+','+rtrim([Empid]) from [Employee]print stuff(@s,1,1,'') --竖表变行表--创建表create table A(工号 varchar(20),日期 smalldatetime,时间 varchar(20))--插入测试数据insert into A select '01', '2004-10-01', '07:50'union select '01', '2004-10-01', '11:35'union select '01', '2004-10-01', '14:20'union select '01', '2004-10-02', '08:01'union select '01', '2004-10-02', '14:30'union select '02', '2004-10-01', '07:55'union select '02', '2004-10-02', '07:58'union select '03', '2004-10-01', '07:56'--创建存储过程create proc p_tasdeclare @id varchar(20),@date smalldatetime,@time varchar(50)select * into #a from A order by 工号,日期,时间update #a set 时间=case when (工号=@id) and (日期=@date) then @time else 时间 end,@time=case when (工号=@id) and (日期=@date) then @time+','+时间 else 时间 end,@id=工号,@date=日期select 工号,日期,max(时间) as 时间 from #a group by 工号,日期 order by 工号--执行exec p_t--测试结果工号 日期 时间---------------------------------------------01 2004-10-01 00:00:00 07:50,11:35,14:2001 2004-10-02 00:00:00 08:01,14:3002 2004-10-01 00:00:00 07:5502 2004-10-02 00:00:00 07:5803 2004-10-01 00:00:00 07:56(所影响的行数为 5 行) declare @sql varchar(2000)set @sql=''select @sql=@sql+[Empid]+',' from [Employee]set @sql=left(@sql,len(@sql)-1)print @sql 不好意思.忘了说.可以不用变量,不用存储过程.用一条 SQL 吗? 再请教一个sql语句 更新 TO: xys_777 我下载的SQL 2005 开发版 安装完为什么只有 配置工具 呢 sql2008数据库附加问题 请教一个简单的问题,及时给分! 关于sql的问题 同样的sql 语句在不同机器上得出的记录行数不一样,大家有没有碰到!!! 5000个汉字怎么放入一个字段??在线等待 如何获取一个表的用户权限及字段使用权限? 能够升级ODBC的驱动程序吗? sql 遍历20000条记录所需的时间大概多长?????
set @s=''
select @s=@+','+rtrim([Empid]) from [Employee]print stuff(@s,1,1,'')
--创建表
create table A(
工号 varchar(20),
日期 smalldatetime,
时间 varchar(20)
)
--插入测试数据
insert into A select '01', '2004-10-01', '07:50'
union select '01', '2004-10-01', '11:35'
union select '01', '2004-10-01', '14:20'
union select '01', '2004-10-02', '08:01'
union select '01', '2004-10-02', '14:30'
union select '02', '2004-10-01', '07:55'
union select '02', '2004-10-02', '07:58'
union select '03', '2004-10-01', '07:56'
--创建存储过程
create proc p_t
as
declare @id varchar(20),@date smalldatetime,@time varchar(50)
select * into #a from A order by 工号,日期,时间
update #a set 时间=case when (工号=@id) and (日期=@date) then @time else 时间 end,
@time=case when (工号=@id) and (日期=@date) then @time+','+时间 else 时间 end,
@id=工号,@date=日期
select 工号,日期,max(时间) as 时间 from #a group by 工号,日期 order by 工号
--执行
exec p_t
--测试结果
工号 日期 时间
---------------------------------------------
01 2004-10-01 00:00:00 07:50,11:35,14:20
01 2004-10-02 00:00:00 08:01,14:30
02 2004-10-01 00:00:00 07:55
02 2004-10-02 00:00:00 07:58
03 2004-10-01 00:00:00 07:56
(所影响的行数为 5 行)
set @sql=''
select @sql=@sql+[Empid]+',' from [Employee]
set @sql=left(@sql,len(@sql)-1)
print @sql
可以不用变量,不用存储过程.
用一条 SQL 吗?