1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| With SR (IdType, HardwareName, GroupsName) AS
(
SELECT tblHardWareType.IdType, tblHardWareType.HardwareName, tblGroups.GroupsName
FROM tblGroups
JOIN tblCountry ON tblGroups.IdCountry = tblCountry.IdCountry
JOIN tblBuilding ON tblCountry.IdCountry = tblBuilding.IdCountry
JOIN tblTeam ON tblBuilding.IdBuilding = tblTeam.IdBuilding
JOIN tblMaterial ON tblTeam.IdTeam = tblMaterial.IdTeam
JOIN tblHardWareType ON tblMaterial.IdType = tblHardWareType.IdType
AND tblGroups.IdGroups = tblHardwareType.IdGroups
WHERE tblBuilding.IdBuilding = '7'
AND tblHardwareType.Visible = 0
AND tblGroups.Visible = 0
UNION ALL
SELECT tblHardWareType.IdType, tblHardWareType.HardwareName, tblGroups.GroupsName
FROM tblGroups
JOIN tblCountry ON tblGroups.IdCountry = tblCountry.IdCountry
JOIN tblBuilding ON tblCountry.IdCountry = tblBuilding.IdCountry
JOIN tblHardWareType ON tblGroups.IdGroups = tblHardWareType.IdGroups
JOIN tblAuthorizedGroups ON tblAuthorizedGroups.IdGroups = tblGroups.IdGroups
WHERE tblBuilding.IdBuilding = '7'
AND tblAuthorizedGroups.UserId = 'MyUserID'
AND tblHardwareType.Visible = 1
AND tblGroups.Visible = 0
)
SELECT IdType
, HardwareName
+ case count(distinct GroupsName) over(partition by HardwareName) when 1 then '' else ' - ' + GroupsName end as HardwareName
FROM SR
GROUP BY IdType
, HardwareName
, GroupsName
ORDER BY IdType ASC; |