SQL группировка и сумма - PullRequest
       5

SQL группировка и сумма

1 голос
/ 01 февраля 2012

Я хотел бы знать, как получить следующий набор результатов из моего текущего набора результатов.

Мой запрос выглядит так:

SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, cast(c.Price * c.Qty as money) AS Total
from tableName a
inner join ....
...
WHERE date between '1/1/2012' and '1/31/2012'
AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')
GROUP BY Col1, b.Col2, c.Price, c.Qty

И возвращает этот набор результатов:

Series       Col2        Total
----------   ----------  ----------
105          C50         5.00
105          C50         15.00
105          C53         20.00
105          C53         20.00
105          C53         20.00

И вот как я бы хотел, чтобы это работало:

Series       Col2        Total
----------   ----------  ----------
105          C50         20.00
105          C53         60.00

Спасибо

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Просто сгруппируйте по неагрегированным столбцам, например:

SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, 
    sum(cast(c.Price * c.Qty as money)) AS Total
from tableName a
inner join ....
...
WHERE date between '1/1/2012' and '1/31/2012'
AND B IN ('C50', 'C51', 'C52', 'C53', 'C54')
GROUP BY Col1, b.Col2
0 голосов
/ 01 февраля 2012

Группировка по вычисляемому столбцу: SUBSTRING(Col1, 1, 3).

SELECT sub.Series, sub.Col2, SUM(sub.Total)
FROM
(
SELECT SUBSTRING(Col1, 1, 3) As 'Series', b.Col2, cast(c.Price * c.Qty as money) AS Total
from tableName a inner join ....
  ...
WHERE date between '1/1/2012' and '1/31/2012'
  AND B IN ('C50', 'C51', 'C52', 'C53', 'C54') 
) as sub
GROUP BY sub.Series, sub.Col2
0 голосов
/ 01 февраля 2012

Это просто.Группируйте, используя Col1 и Col2 в качестве критерия группировки, и суммируйте выражение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...