I think we can use CROSS/OUTER APPLY with FOR XML to convert multiple rows into single row based on Location ID/Location Code.
Here is the final query and temp table generated to test the result.
Create Table and populate some records
CREATE TABLE TempLocations
(
LocationID INT,
LocationCode VARCHAR(20),
LocationName VARCHAR(30),
DivisionCode VARCHAR(100),
SourceCode VARCHAR(100),
DivisionName VARCHAR(100),
BusinessUnitCode VARCHAR(100),
BusinessUnitName VARCHAR(100)
)
INSERT INTO TempLocations
VALUES
(83806, 'D4009','Vanier Mitsubishi Fuso', 'SALES_01', 'SALES_01' ,'Sales_01', 'SALES DEPARTMENT', 'Fuso Vehicle Sales Department'),
(83806, 'D4009', 'Vanier Mitsubishi Fuso', 'Parts_A0', 'Parts_A0', 'Parts District A0', 'PARTS DEPARTMENT', 'Fuso Parts Department'),
(83806, 'D4009', 'Vanier Mitsubishi Fuso', 'SERVICE_C1', 'SERVICE_C1', 'Service Division C1', 'SERVICE DEPARTMENT', 'Fuso Service Department'),
(83807, 'D4008','Borusia', 'SALES_01', 'SALES_01' ,'Sales_01', 'SALES DEPARTMENT', 'Borusia Sales Department'),
(83807, 'D4008', 'Borusia', 'Parts_A0', 'Parts_A0', 'Parts District A0', 'PARTS DEPARTMENT', 'Borusia Parts Department'),
(83807, 'D4008', 'Borusia', 'SERVICE_C1', 'SERVICE_C1', 'Service Division C1', 'SERVICE DEPARTMENT', 'Borusia Service Department')
Final Query to get data for Locations
SELECT
DISTINCT
T.LocationID,
T.LocationCode,
T.LocationName,
TDIV.DivisionCode,
TS.SourceCode,
TDIVName.DivisionName,
TB.BusinessUnitCode,
TBName.BusinessUnitName
FROM TempLocations AS T
CROSS APPLY
(
SELECT
Stuff(
(
SELECT DISTINCT N', ' + DivisionCode
FROM TempLocations AS TDIV
WHERE TDIV.LocationID=T.LocationID FOR XML PATH(''),TYPE
)
.value('text()[1]','nvarchar(max)'),1,2,N''
) AS DivisionCode
) AS TDIV
CROSS APPLY
(
SELECT
Stuff(
(
SELECT DISTINCT N', ' + SourceCode
FROM TempLocations AS TDIV
WHERE TDIV.LocationID=T.LocationID FOR XML PATH(''),TYPE
)
.value('text()[1]','nvarchar(max)'),1,2,N''
) AS SourceCode
) AS TS
CROSS APPLY
(
SELECT
Stuff(
(
SELECT DISTINCT N', ' + DivisionName
FROM TempLocations AS TDIV
WHERE TDIV.LocationID=T.LocationID FOR XML PATH(''),TYPE
)
.value('text()[1]','nvarchar(max)'),1,2,N''
) AS DivisionName
) AS TDIVName
CROSS APPLY
(
SELECT
Stuff(
(
SELECT DISTINCT N', ' + BusinessUnitCode
FROM TempLocations AS TDIV
WHERE TDIV.LocationID=T.LocationID FOR XML PATH(''),TYPE
)
.value('text()[1]','nvarchar(max)'),1,2,N''
) AS BusinessUnitCode
) AS TB
CROSS APPLY
(
SELECT
Stuff(
(
SELECT DISTINCT N', ' + BusinessUnitName
FROM TempLocations AS TDIV
WHERE TDIV.LocationID=T.LocationID FOR XML PATH(''),TYPE
)
.value('text()[1]','nvarchar(max)'),1,2,N''
) AS BusinessUnitName
) AS TBName
-- Drop table
DROP TABLE TempLocations