数据库

本类阅读TOP10

·SQL语句导入导出大全
·Power Designer杂记
·SQL Server日期计算
·常用的oracle函数使用说明(一)
·sqlserver2000数据库置疑的解决方法
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·SQL to Excel 的应用
·SQL语句导入导出大全
·Error:ORA-01033:ORACLE initialization or shutdown in progress错误解决
·Oracle中password file的作用及说明

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
--竖表变行表

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

--竖表变行表
--创建表
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 行)



select [Empid] from [Employee]
得出结果:
张三
李四
王五
...
...

想要将它合并成这种结果:
张三,李四,王五...,...

declare @s varchar(8000)
set @s=''
select @s=@s+','+[Empid] from [Employee]
print stuff(@s,1,1,'')




declare @sql varchar(2000)
set @sql=''
select @sql=@sql+[Empid]+',' from [Employee]
set @sql=left(@sql,len(@sql)-1)
print @sql

 




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有