DECLARE @fromdt AS datetime
DECLARE @todt AS datetime
SET @fromdt = '7/1/2014'
SET @todt = '7/31/2014'
SELECT p.Agency, h.Activityid, h.HourTimeFrom,h.HourTimeTo,h.ActivityDate, h.hours
FROM tblOrgProfile as p
LEFT JOIN tblOrgRegistrations as r
ON p.AgencyID = r.AgencyID
LEFT JOIN tblOrgHours as h
ON h.RegID = r.regid
AND h.ActivityDate >= @fromdt
AND h.ActivityDate <= @todt
AND h.Hours > 0
Where p.Agency <> 'Administrator'
GROUP BY p.Agency,h.Activityid,h.ActivityDate, h.HourTimeFrom,h.HourTimeTo,h.Hours
ORDER BY p.Agency
EXAMPLE.xlsx
DECLARE @fromdt AS datetime
DECLARE @todt AS datetime
SET @fromdt = '7/1/2014'
SET @todt = '7/31/2014'
SELECT
p.Agency
, h.Activityid
, h.HourTimeFrom
, h.HourTimeTo
, h.ActivityDate
, h.hours
, SUM(h.hours) OVER(PARTITION BY p.Agency, h.Activityid) AS sum_hours
FROM tblOrgProfile AS p
LEFT JOIN tblOrgRegistrations AS r
ON p.AgencyID = r.AgencyID
LEFT JOIN tblOrgHours AS h
ON h.RegID = r.regid
AND h.ActivityDate >= @fromdt
AND h.ActivityDate <= @todt
AND h.Hours > 0
WHERE p.Agency <> 'Administrator'
ORDER BY
p.Agency
DECLARE @fromdt AS datetime
DECLARE @todt AS datetime
SET @fromdt = '7/1/2014'
SET @todt = '7/31/2014'
SELECT
p.Agency
, h.Activityid
, h.HourTimeFrom
, h.HourTimeTo
, h.ActivityDate
, h.hours
, SUM(h.hours) OVER(PARTITION BY p.Agency, h.Activityid, h.HourTimeFrom,h.HourTimeTo,h.ActivityDate) AS sum_hours
FROM tblOrgProfile AS p
JOIN tblOrgRegistrations AS r
ON p.AgencyID = r.AgencyID
JOIN tblOrgHours AS h
ON h.RegID = r.regid
AND h.ActivityDate >= @fromdt
AND h.ActivityDate <= @todt
AND h.Hours > 0
WHERE p.Agency <> 'Administrator'
ORDER BY
p.Agency
Beacon Hill Community Improvement Assoc 289 12:00:00.0000000 17:00:00.0000000 2014-07-16 5.00 25.00
Beacon Hill Community Improvement Assoc 289 12:00:00.0000000 17:00:00.0000000 2014-07-16 5.00 25.00
Beacon Hill Community Improvement Assoc 289 12:00:00.0000000 17:00:00.0000000 2014-07-16 5.00 25.00
Beacon Hill Community Improvement Assoc 289 12:00:00.0000000 17:00:00.0000000 2014-07-16 5.00 25.00
Beacon Hill Community Improvement Assoc 289 12:00:00.0000000 17:00:00.0000000 2014-07-16 5.00 25.00
HourID Agency AgencyID Program ActivityID RegID ActivityDate Hours HourTimeFrom HourTimeTo SubGroup ParticipantHour VolunteerHour Fiscal EntryTime
1298 Mid-Austin 48 CYD 88 80 7/8/2014 2 10:00:00 AM 12:00:00 PM 1 0 2015 43:29.0
1299 Mid-Austin 48 CYD 88 80 7/8/2014 2 10:00:00 AM 12:00:00 PM 1 0 2015 43:29.0
1300 Mid-Austin 48 CYD 88 80 7/8/2014 2 10:00:00 AM 12:00:00 PM 1 0 2015 43:29.0
1301 Mid-Austin 48 CYD 88 80 7/8/2014 2 10:00:00 AM 12:00:00 PM 1 0 2015 43:29.0
select
p.Agency, h.AgencyID, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo, h.Hours
from (
select
row_number() over(partition by AgencyID, ActivityID, ActivityDate, HourTimeFrom, HourTimeTo
order by (select 1)) as rn
, *
from tblOrgHours
) AS h
inner join tblOrgProfile as p on h.AgencyID = p.AgencyID
where h.rn = 1
order by p.Agency, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo
;
| Agency | AgencyID | ActivityID | ActivityDate | HourTimeFrom | HourTimeTo | Hours |
|------------|----------|------------|--------------------------|--------------|------------|-------|
| Mid-Austin | 48 | 88 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 2 |
| Mid-Austin | 48 | 92 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 1 |
| Mid-Austin | 48 | 98 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 1 |
CREATE TABLE tblOrgHours
([HourID] int, [Agency] varchar(10), [AgencyID] int, [Program] varchar(3)
, [ActivityID] int, [RegID] int, [ActivityDate] datetime
, [Hours] int, [HourTimeFrom] varchar(7), [HourTimeTo] varchar(7)
, [SubGroup] varchar(4), [ParticipantHour] int, [VolunteerHour] int
, [Fiscal] int, [EntryTime] varchar(7))
;
INSERT INTO tblOrgHours
([HourID], [Agency], [AgencyID], [Program], [ActivityID], [RegID], [ActivityDate], [Hours], [HourTimeFrom], [HourTimeTo], [SubGroup], [ParticipantHour], [VolunteerHour], [Fiscal], [EntryTime])
VALUES
(1298, 'Mid-Austin', 48, 'CYD', 88, 80, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1299, 'Mid-Austin', 48, 'CYD', 88, 81, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1300, 'Mid-Austin', 48, 'CYD', 88, 82, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1301, 'Mid-Austin', 48, 'CYD', 88, 83, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1302, 'Mid-Austin', 48, 'CYD', 88, 84, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1303, 'Mid-Austin', 48, 'CYD', 88, 218, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1304, 'Mid-Austin', 48, 'CYD', 88, 86, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1305, 'Mid-Austin', 48, 'CYD', 88, 89, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1306, 'Mid-Austin', 48, 'CYD', 88, 249, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1307, 'Mid-Austin', 48, 'CYD', 88, 248, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1308, 'Mid-Austin', 48, 'CYD', 88, 71, '2014-08-07 00:00:00', 2, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '43:29.0'),
(1309, 'Mid-Austin', 48, 'CYD', 98, 80, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1310, 'Mid-Austin', 48, 'CYD', 98, 81, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1311, 'Mid-Austin', 48, 'CYD', 98, 82, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1312, 'Mid-Austin', 48, 'CYD', 98, 83, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1313, 'Mid-Austin', 48, 'CYD', 98, 84, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1314, 'Mid-Austin', 48, 'CYD', 98, 218, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1315, 'Mid-Austin', 48, 'CYD', 98, 86, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1316, 'Mid-Austin', 48, 'CYD', 98, 89, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1317, 'Mid-Austin', 48, 'CYD', 98, 249, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1318, 'Mid-Austin', 48, 'CYD', 98, 248, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1319, 'Mid-Austin', 48, 'CYD', 98, 71, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '48:03.0'),
(1320, 'Mid-Austin', 48, 'CYD', 92, 80, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '49:36.0'),
(1321, 'Mid-Austin', 48, 'CYD', 92, 218, '2014-08-07 00:00:00', 1, '00:00.0', '00:00.0', NULL, 1, 0, 2015, '49:36.0')
;
CREATE TABLE tblOrgProfile
([AgencyID] int, [Agency] varchar(120))
;
INSERT INTO tblOrgProfile
([AgencyID], [Agency])
VALUES
(1, 'A Knock at Midnight'),
(2, 'Adler School, The'),
(3, 'Alliance for Community Peace'),
(4, 'Alternatives, Inc.'),
(5, 'Amer-I-Can'),
(6, 'Ark of Saint Sabina & ERC'),
(7, 'Beacon Hill Community Improvement Assoc'),
(48, 'Mid-Austin')
;
**Query 1**:
select
p.Agency, h.AgencyID, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo, h.Hours
from (
select
row_number() over(partition by AgencyID, ActivityID, ActivityDate, HourTimeFrom, HourTimeTo
order by (select 1)) as rn
, *
from tblOrgHours
) AS h
inner join tblOrgProfile as p on h.AgencyID = p.AgencyID
where h.rn = 1
order by p.Agency, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo
**[Results][2]**:
| Agency | AgencyID | ActivityID | ActivityDate | HourTimeFrom | HourTimeTo | Hours |
|------------|----------|------------|--------------------------|--------------|------------|-------|
| Mid-Austin | 48 | 88 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 2 |
| Mid-Austin | 48 | 92 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 1 |
| Mid-Austin | 48 | 98 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 1 |
http://sqlfiddle.com/#!6/9c96a/1
| Agency | AgencyID | ActivityID | ActivityDate | HourTimeFrom | HourTimeTo | Hours |
|------------|----------|------------|--------------------------|--------------|------------|-------|
| Mid-Austin | 48 | 88 | August, 07 2014 00:00:00 | 00:00.0 | 00:00.0 | 2 |
| Mid-Austin | 48 | 88| August, 08 2014 00:00:00 | 00:00.0 | 00:00.0 | 1 |
| Agency | AgencyID | ActivityID | HourTimeFrom | HourTimeTo | Hours |
|------------|----------|------------|--------------------------|--------------|------------|-------|
| Mid-Austin | 48 | 88 | 00:00.0 | 00:00.0 | 3 |
select
p.Agency, h.AgencyID, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo, SUM(h.Hours) as Hours
from (
select
row_number() over(partition by AgencyID, ActivityID, ActivityDate, HourTimeFrom, HourTimeTo
order by (select 1)) as rn
, *
from tblOrgHours
) AS h
inner join tblOrgProfile as p on h.AgencyID = p.AgencyID
where h.rn = 1
group by p.Agency, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo
order by p.Agency, h.ActivityID, h.ActivityDate, h.HourTimeFrom, h.HourTimeTo
;
select
p.Agency,a.ActivityName, h.ActivityID, SUM(h.Hours) as Hours
from (
select
row_number() over(partition by AgencyID, ActivityID, ActivityDate, HourTimeFrom, HourTimeTo
order by (select 1)) as rn
, *
from tblOrgHours
) AS h
join tblOrgProfile as p on h.AgencyID = p.AgencyID
join tblOrgActivities as a on a.ActivityID = h.ActivityID
where h.rn = 1 and p.AgencyID <> 74
group by p.Agency, h.ActivityID, a.ActivityName
order by p.Agency, h.ActivityID, a.ActivityName
Open in new window
You could use this query:
Open in new window