例如
table1
活动名 开始时间 结束时间
活动1 2014-09-18 6:30:00 2014-09-18 8:30:00
活动2 2014-09-18 8:30:00 2014-09-18 10:30:00
活动3 2014-09-18 10:30:00 2014-09-18 11:30:00
现在要显示成
活动名 开始时间 结束时间 当日开始时间
活动1 2014-09-18 6:30:00 2014-09-18 8:30:00 6*60+30(小时*60 + 分钟)
活动2 2014-09-18 8:30:00 2014-09-18 10:30:00 6*60+30(小时*60 + 分钟)
活动3 2014-09-18 10:30:00 2014-09-18 11:30:00 6*60+30(小时*60 + 分钟)
补充一下没说清楚 后面第二行 和第三行 和第一行数据一样
我表示没看懂~
就是所有行都显示第一行的计算结果
第一行的意思是 当天第一个 活动开始的时间
这一天的数据都是 以第一行的数据计算
@小眼睛老鼠: 可以先定义一个变量存储这个结果嘛!然后每次查询带上就是了,这样更快。
@幻天芒: 交互手段为视图 不是存储过程
@小眼睛老鼠: 那就把变量变成一个表,然后用连接查询。
@幻天芒: 我做出来了 通过 cross join 做的 基本就是你说的方法
只不过 我只是想知道 有没有更好的方法
@小眼睛老鼠: 因为你的某一列是一样的,所以我暂时只能想到这种。
给你点相关函数参考
select year(开始时间)=2014
select month(开始时间)=9
select day(开始时间)=18
select datepart(hh,开始时间)=6
select datepart(mi,开始时间)=30
补充一下没说清楚 后面第二行 和第三行 和第一行数据一样
select 活动名,开始时间,结束时间, datepart(hh,(select 开始时间 from table1 where 活动名='活动1'))*60+datepart(mi,开始时间) as '当日开始时间' from table1
@小眼睛老鼠:
with res (select 活动名,year(开始时间) + '-' +month(开始时间) + '-' + day(开始时间) as 开始日期,开始时间 ,结束时间 from table1) select t1.活动名称,t1.开始时间,t1.结束时间,datepart(hh, t2.当日开始时间)*60 + datepart(mi,t2.当日开始时间) as 当日开始时间 from res t1 inner join (select 活动名,开始日期,min(开始时间) as 当日开始时间 from res group by 活动名,开始日期) t2 on t1.活动名=t2.活动名 and t1.开始日期=t2.开始日期
@+小马哥++:
select 开始时间,结束时间,datepart(hh,开始时间)*60+datepart(mi,开始时间) as '当日开始时间' from table1
当日开始时间你是想显示成 6*60+30(小时*60 + 分钟)的字符串,还是总的分钟数,这个你要自己转换一下了。
补充一下没说清楚 后面第二行 和第三行 和第一行数据一样
select 活动名, 开始时间, 结束时间, datepart(hh,开始时间) + '*60+' +datepart(mi,开始时间) as '当日开始时间' from table1
补充一下没说清楚 后面第二行 和第三行 和第一行数据一样