Sql server SQL Server多行分组
缩小一个大数据集的范围后,我得到了下表的输出。我正在使用SQLServer2008R2Sql server SQL Server多行分组,sql-server,Sql Server,缩小一个大数据集的范围后,我得到了下表的输出。我正在使用SQLServer2008R2 ID RID Date Time 1001 1 02/05/2009 12:24:01 1001 2 02/05/2009 13:54:01 1002 3 14/04/2012 10:36:01 1002 4 21/03/2014 11:46:01 1002 5 21/03/2014 14:40:01 如果日期相同,然后有一
ID RID Date Time
1001 1 02/05/2009 12:24:01
1001 2 02/05/2009 13:54:01
1002 3 14/04/2012 10:36:01
1002 4 21/03/2014 11:46:01
1002 5 21/03/2014 14:40:01
如果日期相同,然后有一个列出了所有时间的表(输出1),或者只有时间的日期和日期差异(输出2),我如何将日期分组在一起
我所能想到的就是使用光标,但我正试图避免这种情况
产出1
ID Date Time 1 Time 2
1001 02/05/2009 12:24:01 13:54:01
1002 21/03/2014 11:46:01 14:40:01
产出2
ID Date Time Diff
1001 02/05/2009 01:04:00
1002 21/03/2014 03:02:00
这是一个简单的分组:
Select ID, Date, Min(Time) As Time1, Max(Time) As Time2
From TableName
Group By ID, Date
Select ID, Date, Datediff(ss, Min(Time), Max(Time)) As Seconds,
RIGHT('0' + CAST(Datediff(ss, Min(Time), Max(Time)) / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((Datediff(ss, Min(Time), Max(Time)) / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(Datediff(ss, Min(Time), Max(Time)) % 60 AS VARCHAR),2) As Time
From TableName
Group By ID, Date
这样的方法应该可以很好地工作:
CREATE TABLE test1 (
id INT NOT NULL,
rid INT NOT NULL,
dt DATETIME NOT NULL
);
INSERT INTO dbo.test1
( id, rid, dt )
VALUES
( 1001, 1, '02/may/2009 12:24:01'),
( 1001, 2, '02/may/2009 13:54:01'),
( 1002, 3, '14/apr/2012 10:36:01'),
( 1002, 4, '21/mar/2014 11:46:01'),
( 1002, 5, '21/mar/2014 14:40:01')
SELECT id, CAST(dt AS DATE), DATEDIFF(MINUTE, MAX(dt), MIN(dt))
FROM dbo.test1
GROUP BY id, CAST(dt AS DATE)
每行的最大次数是多少?很好,我没有想到最小和最大。