Reputation:
I want to display max time and min time for a day in grid control using Visual Basic from a SQL Server database. My data currently looks like this:
UserID UserName Date Time
------------------------------------------
1 Shanks 30/1/2009 10:11:22
1 Shanks 30/1/2009 10:15:22
1 Shanks 30/1/2009 12:15:22
1 Shanks 30/1/2009 13:15:22
I need the output like this:
1 Shanks 30/1/2009 10:11:22 13:15:22
My table structure is:
UserID integer,
UserName varchar(20),
[Date] datetime,
[Time] datetime
How can I get that output from my data?
Upvotes: 0
Views: 2905
Reputation: 125488
SELECT
UserID,
UserName,
[Date],
MIN([Time]),
MAX([Time])
FROM
Table
GROUP BY
UserID,
UserName,
[Date]
Tested and working correctly with the following
DECLARE @Table TABLE (UserID INT,UserName VARCHAR(25),[Date] DATETIME,[Time] DATETIME)
INSERT INTO @Table VALUES(1, 'Shanks', '30 JAN 2009', '10:11:22');
INSERT INTO @Table VALUES(1, 'Shanks', '30 JAN 2009', '10:15:22');
INSERT INTO @Table VALUES(1, 'Shanks', '30 JAN 2009', '12:15:22');
INSERT INTO @Table VALUES(1, 'Shanks', '30 JAN 2009', '13:15:22');
INSERT INTO @Table VALUES(2, 'Shilpa', '3 JAN 2009', '10:11:22');
INSERT INTO @Table VALUES(2, 'Shilpa', '3 JAN 2009', '11:15:22');
INSERT INTO @Table VALUES(2, 'Shilpa', '3 JAN 2009', '12:15:22');
INSERT INTO @Table VALUES(2, 'Shilpa', '3 JAN 2009', '17:15:22');
SELECT
UserID,
UserName,
[Date],
MIN([Time]),
MAX([Time])
FROM
@Table
GROUP BY
UserID,
UserName,
[Date]
Results in
UserID UserName Date
----------- ------------------------- ----------------------- ----------------------- -----------------------
1 Shanks 2009-01-30 00:00:00.000 1900-01-01 10:11:22.000 1900-01-01 13:15:22.000
2 Shilpa 2009-01-03 00:00:00.000 1900-01-01 10:11:22.000 1900-01-01 17:15:22.000
Upvotes: 2
Reputation: 12509
Is this what you're looking for?
SELECT UserID,
UserName,
Date,
MIN([Time]) AS MinTime,
MAX([Time]) AS MaxTime,
FROM Users
GROUP BY UserID, UserName, [Date]
Upvotes: 2