Using the SqlFiddle of @Shiva:
create table equip_info (
equip_id int not null,
asset_no nvarchar(10) not null
);
insert into equip_info (equip_id, asset_no) values
(1, 'CAL-1'),
(2, 'MIC-1');
create table equip_insp (
insp_id int not null,
equip_id int not null,
insp_name nvarchar(50) not null,
due_date datetime not null
);
insert into equip_insp values
(1,1,'Calibration','10/01/2014'),
(2,1,'Maintenance','10/01/2014'),
(3,1,'Check','10/02/2014'),
(4,2,'Calibration','04/11/2014'),
(5,2,'Maintenance','04/05/2014');
This is what you need:
;WITH DataSource AS
(
select inf.equip_id
,asset_no
,MIN(due_date) as [due_date]
from equip_info inf
inner join equip_insp ins
on inf.[equip_id] = ins.[equip_id]
GROUP BY inf.equip_id
,asset_no
)
SELECT equip_id
,asset_no
,SUBSTRING((SELECT DISTINCT ', ' + insp_name
FROM equip_insp
WHERE due_date = DS.due_date
AND equip_id = DS.equip_id
FOR XML PATH('')
),2,4000) as inspection
,due_date
FROM DataSource DS
This is the ouput:
Here is the full working example.