Ответ 1
Попробуйте:
SELECT
Code,
SUM(ItemCount) ItemCount,
Type,
SUM(Amount) Amount
FROM
YourTable
GROUP BY Code, Type
ORDER BY Code
Ниже приведены данные списка.
Code ItemCount Type Amount
----------------------------------------
B001 1 Dell 10.00
B001 1 Dell 10.00
B001 1 Apple 10.00
B001 2 Apple 20.00
B001 2 Apple 20.00
B114 1 Apple 30.50
B114 1 Apple 10.00
Мне нужен результат для группировки по коду и по типу и сумме ItemCount
и получить общее количество Amount
в каждой строке.
Возможно ли это?
Code ItemCount Type Amount
----------------------------------------
B001 2 Dell 20.00
B001 5 Apple 50.00
B114 2 Apple 40.50
Попробуйте:
SELECT
Code,
SUM(ItemCount) ItemCount,
Type,
SUM(Amount) Amount
FROM
YourTable
GROUP BY Code, Type
ORDER BY Code
Это выглядит как домашнее задание.
(Клянусь, я подумал, что это было помечено как MySQL, когда я впервые посмотрел на вопрос, но в заголовке четко отображается MS SQL)
Для MySQL этот запрос вернет указанный набор результатов:
SELECT t.Code
, SUM(t.ItemCount) AS ItemCount
, t.Type
, s.Amount AS Amount
FROM mytable t
CROSS
JOIN ( SELECT SUM(r.Amount) AS Amount
FROM mytable r
) s
GROUP
BY t.Code
, t.Type
ORDER BY t.Code ASC, t.Type DESC
Для других баз данных удалите для MySQL обратные ссылки вокруг псевдонимов столбцов.
Если вам нужно сохранить регистр, для Oracle идентификаторы заключены в двойные кавычки. Для SQL Server идентификаторы заключены в квадратные скобки. Для идентификаторов MySQL заключены в обратные ссылки.
Вы можете попробовать этот запрос:
SELECT Code,SUM(ItemCount) AS ItemCount,Type,SUM(Amount) AS Amount
FROM
table
GROUP BY Code, Type
Это даст вам правильный результат. Вам нужно группировать Code
и Type
, а не ItemCount
Вы можете попробовать это более простое решение:
select Code,sum(ItemCount),Type,sum(Amount) from table group by code,type
Понимание "группы по" пригодится
Суммы, которые вы даете, отличаются от данных образца, но это работает для значений данных образца:
SELECT Code, SUM(ItemCount) AS ItemCount, [Type], SUM(Amount) AS Amount
FROM dbo.TestSubs GROUP BY Code,[Type] ORDER BY Code
Если мое понимание верное, что фактическое общее количество каждой строки является продуктом элемента и суммы, то вы можете использовать приведенный ниже код. Если не использовать код @Abu.
;WITH cte AS
(
SELECT Code, ItemCount, Type, Amount, ItemCount * Amount AS TotalAmount FROM <Table>
)
SELECT
Code,
SUM(ItemCount),
Type,
SUM(TotalAmount)
FROM cte
GROUP BY Code, Type