Пост от Дейва Баркера - правильный ответ, НО: если вам всегда нужно возвращать точное число строк, соответствующее количеству строк в myLookUpTable, и (lookupid, ParentId) не является уникальным в InfoTable, который вы, возможно, захотитеиспользуйте одну из следующих опций:
-- sample contents - note that there are multiple amounts for lookupid, parentid (3,332)
INSERT INTO infoTable Values (1,1,2,332)
INSERT INTO infoTable Values (2,3,14,332)
INSERT INTO infoTable Values (3,3,24,332)
INSERT INTO infoTable Values (4,3,34,0)
INSERT INTO infoTable Values (5,3,44,332)
-- option 1
SELECT mlut.Name, it.Amount
FROM myLookUpTable as mlut
LEFT JOIN
(
SELECT lookUpId, SUM(Amount) as Amount
FROM InfoTable
WHERE ParentId = 332
GROUP BY lookupId
) as it
ON mlut.lookupId = it.lookUpId
-- option 2
SELECT mlut.Name, it.Amount
FROM myLookUpTable as mlut
LEFT JOIN
(
SELECT lookUpId, ParentId, SUM(Amount) as Amount
FROM InfoTable
GROUP BY lookupId, ParentId
) as it
ON mlut.lookupId = it.lookUpId
AND it.ParentId = 332
-- option 2 using CTE
;WITH it AS (
SELECT lookUpId, ParentId, SUM(Amount) as Amount
FROM InfoTable
GROUP BY lookupId, ParentId
)
SELECT mlut.Name, it.Amount
FROM myLookUpTable as mlut
LEFT JOIN it
ON mlut.lookupId = it.lookUpId
AND it.ParentId = 332
/*
Name Amount
---------- -----------
Red 2
Green NULL
Blue 82
*/