#sql #tsql #sum
#sql #tsql #сумма
Вопрос:
У меня есть куча таблиц, которые я left join
и Group By
предложение, которое группирует кучу столбцов.
Однако есть один столбец, который group-by
включен, но остается отдельным (productNumber).
Мне нужно суммировать столбец количества ниже:
salesID historyID productID name productNumber quantity
1 123 1 A 234554 10
1 123 1 A 666666 10
Мне нужна только первая запись, но с количеством 10 10 = 20.
Первая запись будет иметь флаг mainNumber = 1, а вторая запись будет иметь mainNumber = 0, однако этот столбец не отображается в SELECT
.
Другими словами, я хотел бы суммировать количества, но отображать только productNumber, где mainNumber = 1.
Как мне это сделать?
Спасибо!
Ответ №1:
Если я правильно понял вопрос, это может вам помочь:
SELECT salesID, historyID, productID, name, productNumber, total.quantity
FROM table1
JOIN (
SELECT salesID, SUM(quantity) AS quantity FROM table1 GROUP BY salesID
) AS total
ON table1.salesID = total.salesID
WHERE mainNumber=1
Комментарии:
1. По сути, это то, что мне было нужно, по крайней мере, я двигаюсь в правильном направлении. Большое спасибо.
Ответ №2:
Не совсем уверен, что я понял… В результирующем наборе вам нужна только первая строка, но какое значение должно быть в столбце productNumber?
Если подойдет практически любое значение, вы не должны ГРУППИРОВАТЬ ПО productNumber (что позволяет различать строки), а агрегировать его, например, с помощью MIN или MAX .