首页 新闻 会员 周边

如何对表的第一行做运算 添加到某列后?

0
悬赏园豆:30 [已解决问题] 解决于 2014-11-29 09:42

例如

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 + 分钟)

 

补充一下没说清楚 后面第二行 和第三行 和第一行数据一样

小眼睛老鼠的主页 小眼睛老鼠 | 老鸟四级 | 园豆:2731
提问于:2014-09-18 16:01
< >
分享
最佳答案
0

我表示没看懂~

收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2014-09-19 15:56

就是所有行都显示第一行的计算结果 

第一行的意思是 当天第一个 活动开始的时间 

这一天的数据都是 以第一行的数据计算

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-23 18:01

@小眼睛老鼠: 可以先定义一个变量存储这个结果嘛!然后每次查询带上就是了,这样更快。

幻天芒 | 园豆:37175 (高人七级) | 2014-09-24 08:32

@幻天芒: 交互手段为视图 不是存储过程

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-24 11:07

@小眼睛老鼠: 那就把变量变成一个表,然后用连接查询。

幻天芒 | 园豆:37175 (高人七级) | 2014-09-24 15:52

@幻天芒:  我做出来了 通过 cross join 做的 基本就是你说的方法

只不过 我只是想知道 有没有更好的方法

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-24 17:05

@小眼睛老鼠: 因为你的某一列是一样的,所以我暂时只能想到这种。

幻天芒 | 园豆:37175 (高人七级) | 2014-09-24 21:34
其他回答(3)
0

给你点相关函数参考

select year(开始时间)=2014

select month(开始时间)=9

select day(开始时间)=18

select datepart(hh,开始时间)=6

select datepart(mi,开始时间)=30

+小马哥++ | 园豆:906 (小虾三级) | 2014-09-18 16:22

补充一下没说清楚 后面第二行 和第三行 和第一行数据一样

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-19 00:03
select   活动名,开始时间,结束时间, 
datepart(hh,(select 开始时间 from table1 where 活动名='活动1'))*60+datepart(mi,开始时间) as '当日开始时间'   
from table1

 

@小眼睛老鼠: 

支持(0) 反对(0) +小马哥++ | 园豆:906 (小虾三级) | 2014-09-19 08:24
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.开始日期

 

@+小马哥++: 

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-19 09:06
0

select   开始时间,结束时间,datepart(hh,开始时间)*60+datepart(mi,开始时间) as '当日开始时间'   from table1

 

当日开始时间你是想显示成 6*60+30(小时*60 + 分钟)的字符串,还是总的分钟数,这个你要自己转换一下了。

收获园豆:10
Cat Qi | 园豆:761 (小虾三级) | 2014-09-18 16:50

补充一下没说清楚 后面第二行 和第三行 和第一行数据一样

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-19 00:03
0
select   活动名, 开始时间, 结束时间, datepart(hh,开始时间) + '*60+' +datepart(mi,开始时间) as '当日开始时间'   from table1
收获园豆:10
519740105 | 园豆:5810 (大侠五级) | 2014-09-18 17:44

补充一下没说清楚 后面第二行 和第三行 和第一行数据一样

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-09-19 00:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册