日期:2014-05-17  浏览次数:20499 次

SQL 将两条数据并成一条
有一表Table1
StarTime,EndTime,state
如:我 22:00 -- 08:00在睡觉,录数据时就要录成, 
22:00 -- 24:00 睡觉  
00:00 -- 08:00 睡觉
如果我用select COUNT(*) from Table1 where state ='睡觉',Count()出来的结果是2,我要如果把这两条数据并成一条,意思就是Count()出来后结果要为1
要怎么写呢


------解决方案--------------------
SQL code

--自连接
--select count(*) from table1 t1 join table1 t2 on t1.endtime=t2.starttime and state='睡觉'
--当然24点和0点自己去处理。因为不知道你是字符,还是time

------解决方案--------------------
count(distinct state)
------解决方案--------------------
探讨
有一表Table1
StarTime,EndTime,state
如:我 22:00 -- 08:00在睡觉,录数据时就要录成,
22:00 -- 24:00 睡觉
00:00 -- 08:00 睡觉
如果我用select COUNT(*) from Table1 where state ='睡觉',Count()出来的结果是2,我要如果把这两条数据并成一条,意思就是Count()……

------解决方案--------------------
这个好像有点复杂
如果不连续就算是两条了对吧
------解决方案--------------------
SQL code
--我也来猜一个
;with t as 
(
    select a.* from test a
    where exists (select 1 from test b where a.EndTime='24:00' and b.StartTime='00:00')    
)
select count(*) from t
where state=N'睡觉'

------解决方案--------------------
探讨
引用:
引用:
有一表Table1
StarTime,EndTime,state
如:我 22:00 -- 08:00在睡觉,录数据时就要录成,
22:00 -- 24:00 睡觉
00:00 -- 08:00 睡觉
如果我用select COUNT(*) from Table1 where state ='睡觉',Count()出来的结果是2,我要如果把……

------解决方案--------------------

起止时间 字段全设置成 日期格式,录入数据时 开始时间、结束时间 采用 yyyy-mm-dd hh:mm:ss 形式,一条数据不就解决了。

本来挺简单的事,搞那么复杂,你设计数据库的时候,不考虑效率吗?
------解决方案--------------------
探讨

如果是我自己设计数据库就好了
字段本来我与另一同事说要设成日期格式
经理不干

------解决方案--------------------
探讨

引用:
起止时间 字段全设置成 日期格式,录入数据时 开始时间、结束时间 采用 yyyy-mm-dd hh:mm:ss 形式,一条数据不就解决了。

本来挺简单的事,搞那么复杂,你设计数据库的时候,不考虑效率吗?

如果是我自己设计数据库就好了
字段本来我与另一同事说要设成日期格式
经理不干