oracle板块人气不佳 http://topic.csdn.net/u/20091217/09/fec9f640-5136-42b2-89bf-a982879dbb7d.html?seed=2064379867&r=61977794#r_61977794求存储过程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还是交给乌龟来做好了 oracle的不会啊 --参考这个/*====================================================*/-- Author: Ken Wong-- Create date: 2009-12-17 10:44:49-- Description: /*====================================================*//*dbo.proc_trans_makedata '@tableid day starttime overtime name 1 20091202 9:00 16:00 张三 '*//*例子描述问题: 表 t1 , 内容: -------------------------------------------------------------- id day starttime overtime name 1 20091202 9:00 16:00 张三 ----------------------------------------------------------------- 查询条件:20091129 - 20091205, 写一条 SQL 语句得到下面的表: ------------------------------------------------------------------------------------ 时间 星期日 星期一 星期二 星期三 星期四 星期五 星期六 8:00-9:00 null null null null null null null 9:00-10:00 null null null 张三 null null null 10:00-11:00 null null null 张三 null null null 11:00-12:00 null null null 张三 null null null 13:00-14:00 null null null 张三 null null null 14:00-15:00 null null null 张三 null null null 15:00-16:00 null null null 张三 null null null 16:00-17:00 null null null null null null null 17:00-18:00 null null null null null null null */--> 测试数据:@tabledeclare @table table([id] int,[day] varchar(10),[starttime] varchar(10),[overtime] varchar(10),[name] varchar(10))insert @tableselect 1,'20091202', '09:00','16:00','张三'declare @begdate datetime,@enddate datetimeselect @begdate = '20091129',@enddate = '20091205'select t.[date],t.[time],u.[name] into #temp from(select convert(varchar(10),dateadd(hour,number,@begdate),112) as [date],convert(varchar(10),dateadd(hour,number,@begdate),108) + '-'+convert(varchar(10),dateadd(hour,number+1,@begdate),108) as [time],null as [name]from master.dbo.spt_valueswhere type = 'P' and dateadd(hour,number,@begdate) <= dateadd(hour,18,@enddate)and convert(varchar(10),dateadd(hour,number,@begdate),108) >= '08:00'and convert(varchar(10),dateadd(hour,number,@enddate),108) <= '18:00') t left join (select convert(varchar(10),dateadd(hour,r.number,@begdate),112) as [date],convert(varchar(10),dateadd(hour,number,@begdate),108) + '-'+convert(varchar(10),dateadd(hour,number+1,@begdate),108) as [time],h.namefrom master.dbo.spt_values r ,@table h where type = 'P' and convert(varchar(10),dateadd(hour,number,@begdate),108) >= h.[starttime]and convert(varchar(10),dateadd(hour,number,@enddate),108) <= h.[overtime]and convert(varchar(10),dateadd(hour,r.number,@begdate),112) = h.[day]) uon t.[date] = u.[date] and t.[time] = u.[time]--select * from #tempdeclare @sql varchar(8000)select @sql = ''select @sql = @sql + ',max(case [date] when '+[date]+' then name else null end) as ['+ltrim(datename(weekday,[date]))+']'from (select distinct [date] from #temp) tselect @sql = 'select [time] '+ @sql + ' from #temp group by [time]'--print @sqlexec(@sql)drop table #temp 呵呵 sql server 实现也行啊 我自己转换 orcale 无法新建用户~~~~急 求助!!!!!!!!! oracle如何实现周期文本数据录入 utl_file包的问题 大家给我解释下这段sql吧,看不了多懂 怎样把A用户中所有表和视图的SELECT权限授予B用户? oracle 绝对高手进 oracle中通过表联接查询进行数据更新的语句怎么写? 提供ORACLE Transparent GateWay的下载或资料的来领分!! 如何创建一个非空的自动加一的字段(在线等待,解决即结贴) 关于db_32k_cache_size/db_cache_size和SGA关系的问题 怎么查看别人的Oracle数据文件
--参考这个
/*====================================================*/
-- Author: Ken Wong
-- Create date: 2009-12-17 10:44:49
-- Description:
/*====================================================*/
/*
dbo.proc_trans_makedata '@table
id day starttime overtime name 1 20091202 9:00 16:00 张三
'
*/
/*
例子描述问题:
表 t1 , 内容: --------------------------------------------------------------
id day starttime overtime name 1 20091202 9:00 16:00 张三
----------------------------------------------------------------- 查询条件:20091129 - 20091205, 写一条 SQL 语句得到下面的表: ------------------------------------------------------------------------------------
时间 星期日 星期一 星期二 星期三 星期四 星期五 星期六
8:00-9:00 null null null null null null null
9:00-10:00 null null null 张三 null null null
10:00-11:00 null null null 张三 null null null
11:00-12:00 null null null 张三 null null null
13:00-14:00 null null null 张三 null null null
14:00-15:00 null null null 张三 null null null
15:00-16:00 null null null 张三 null null null
16:00-17:00 null null null null null null null
17:00-18:00 null null null null null null null */
--> 测试数据:@table
declare @table table([id] int,[day] varchar(10),[starttime] varchar(10),[overtime] varchar(10),[name] varchar(10))
insert @table
select 1,'20091202', '09:00','16:00','张三'
declare @begdate datetime,@enddate datetime
select @begdate = '20091129',@enddate = '20091205'select t.[date],t.[time],u.[name] into #temp from
(
select convert(varchar(10),dateadd(hour,number,@begdate),112) as [date],
convert(varchar(10),dateadd(hour,number,@begdate),108) + '-'
+convert(varchar(10),dateadd(hour,number+1,@begdate),108) as [time],
null as [name]
from master.dbo.spt_values
where type = 'P'
and dateadd(hour,number,@begdate) <= dateadd(hour,18,@enddate)
and convert(varchar(10),dateadd(hour,number,@begdate),108) >= '08:00'
and convert(varchar(10),dateadd(hour,number,@enddate),108) <= '18:00'
) t left join
(
select convert(varchar(10),dateadd(hour,r.number,@begdate),112) as [date],
convert(varchar(10),dateadd(hour,number,@begdate),108) + '-'
+convert(varchar(10),dateadd(hour,number+1,@begdate),108) as [time],
h.name
from master.dbo.spt_values r ,@table h
where type = 'P'
and convert(varchar(10),dateadd(hour,number,@begdate),108) >= h.[starttime]
and convert(varchar(10),dateadd(hour,number,@enddate),108) <= h.[overtime]
and convert(varchar(10),dateadd(hour,r.number,@begdate),112) = h.[day]
) u
on t.[date] = u.[date] and t.[time] = u.[time]--select * from #tempdeclare @sql varchar(8000)
select @sql = ''select @sql = @sql + ',max(case [date] when '+[date]+' then name else null end) as ['+ltrim(datename(weekday,[date]))+']'
from (select distinct [date] from #temp) tselect @sql = 'select [time] '+ @sql + ' from #temp group by [time]'--print @sqlexec(@sql)drop table #temp