Поскольку вы не указали, какой механизм базы данных используете, вот версия запроса, которая работает на SQL Server 2000 и более поздних версиях (возможно, работает и на MySQL):
SELECT
T.Amount,
CASE
WHEN T.Amount <= 1 THEN I.Ingredient
ELSE
CASE WHEN ISNULL(I.Plural, '') = '' THEN I.Ingredient ELSE I.Plural END
END
FROM
(
SELECT SUM(Amount) Amount, Ingredient_ID FROM Shopping_Ingredients GROUP BY Ingredient_ID
) AS T
INNER JOIN Ingredient I ON
I.Ingredient_ID = T.Ingredient_ID
А здесь для SQL Server2005 и новее:
;WITH CTE
AS
(
SELECT SUM(Amount) Amount, Ingredient_ID FROM Shopping_Ingredients GROUP BY Ingredient_ID
)
SELECT
T.Amount,
CASE
WHEN T.Amount <= 1 THEN I.Ingredient
ELSE
CASE WHEN ISNULL(I.Plural, '') = '' THEN I.Ingredient ELSE I.Plural END
END
FROM CTE AS T
INNER JOIN Ingredient I ON
I.Ingredient_ID = T.Ingredient_ID