2013-03-26 119 views
0

如何将两行合并为一个。如何将两行合并为一个?

EMPCode actHours actDate  rowno 
107 8.00  2013-01-21 1 
107 8.30  2013-01-22 1 
107 4.00  2013-01-23 1 
107 4.00  2013-01-23 2 
107 4.10  2013-01-24 1 
107 4.20  2013-01-24 2 
107 4.30  2013-01-25 1 
107 4.30  2013-01-25 2 

I want the result as follows: 

actHours actDate 
8.00  2013-01-21 
8.30  2013-01-22 
8.00  2013-01-23 
8.30  2013-01-24 
9.00  2013-01-25 

任何帮助将不胜感激。在此先感谢:-)

回答

2

试试这个:

SELECT SUM(actHours) actHours, actDate FROM Tbl GROUP BY actDate 

其实,如果你提供列的数据类型,答案可以更具体。

+0

感谢您的回复..实际上actHours的数据类型是数字(5,2) – 2013-03-26 10:50:21

0

如果什么数据包含这些..

108 3.40  2013-01-26 1 
108 3.50  2013-01-26 2 

如果数据类型为time,则U可以使用此查询..

with datecte 
as 
(
SELECT actDate, SUM(DATEDIFF(MINUTE, '0:00:00', actHours)) actHours 
FROM Tb1 
GROUP BY actDate 
) 
SELECT actDate, 
actHours = RTRIM(actHours/60) + ':' + RIGHT('0' + RTRIM(actHours%60),2) 
FROM datecte 
+0

是的,您是对的。 – 2013-03-26 11:40:58

+0

感谢Ram,但数据类型是数字。 – 2013-03-26 12:44:37

+0

@ram而不是张贴为不同的答案,尝试编辑您的单个帖子,并指定不同的解决方案,以解决相同的问题 – praveen 2013-03-26 13:20:16

0

使用这种话,

with datecte 
as 
(
select actDate, SUM(DATEDIFF(MINUTE, '0:00:00', actHours)) actHours 
from (
    SELECT actDate,CAST(REPLACE(actHours,'.',':') as time) actHours 
    FROM #tb1 
    ) k 
group by actDate 
) 


SELECT actDate, 
actHours = RTRIM(actHours/60) + ':' + RIGHT('0' + RTRIM(actHours%60),2) 
FROM datecte 

希望这给你解决方案..

OK @praveen ..