Sql объединить 2 агрегированных столбца - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть таблица, которая выглядит так:

Name   |   Quantity  |   Unit
-------+-------------+----------
Water         10        Lt
Water         5         Lt
Water         3         Lt
Snacks        20        Kg
Snacks        15        Kg
Beer          7         Lt
Beer          12        Lt
Pizza         1         Piece
Pizza         2         Piece
Pizza         5         Piece

Мне нужно получить эти результаты:

Name   |  Quantity_Unit  
-------+------------------
Water         18 Lt
Snacks        35 Kg
Beer          19 Lt
Pizza         8 Piece

Поэтому мне нужно выбрать сумму количеств по продуктам И добавить единицу измерения в тот же столбец. Это довольно просто, и вот как я это делаю:

select name, cast(sum(quantity) as nvarchar) + ' ' + max(unit) as total 
from goods group by name

Мой вопрос: как я могу добавить единицы измерения к агрегированному столбцу с суммой (количеством), не используя агрегатные функции, такие как max (единица) или используя max (), в этом случае хорошо? В основном все товары в группе будут иметь одинаковую единицу измерения, и я ищу самый элегантный запрос. Благодаря.

1 Ответ

0 голосов
/ 01 апреля 2011

В вашем случае вы можете использовать MAX или MIN , и это не повлияет на ваш результат.

Вы также можете избежать агрегатных функций MAX и MIN, просто запросив столбец unit и добавив его в предложение group by.

select name, cast(sum(quantity) as nvarchar) + ' ' + unit as total 
from goods group by name, unit
...