Это моя таблица с данными:
Таблица input_data:
+-------------+------------+-------------+-------------+
| UID | Code | QTOut | QTIn |
+-------------+------------+-------------+-------------+
| A | 1 | 5000 | 0 |
| A | 2 | 20000 | 0 |
| A | 3 | 22000 | 0 |
| A | 4 | 14000 | 0 |
| A | 1 | 0 | 5000 |
| A | 2 | 0 | 4000 |
| A | 4 | 0 | 11 |
| A | 1 | 1000 | 0 |
+-------------+------------+-------------+-------------+
И это должно быть на выходе:
Таблица output_data:
+-------------+------------+-------------+
| UID | Code | Total |
+-------------+------------+-------------+
| A | 1 | 1000 |
| A | 2 | 16000 |
| A | 4 | 22000 |
| A | 3 | 13899 |
+-------------+------------+-------------+
Цель каждого кода состоит в том, чтобы получить, сколько штук осталось.
До сих пор я пробовал этот способ, но результат равен 0:
SELECT o.UID, o.Code, (o.QTOut- tt.QTIn) AS Total
FROM input_data o
LEFT JOIN input_data tt
ON o.UID = tt.UID
WHERE o.UID= 'A'
GROUP BY o.Code
@ RF1991 ты прав, извини. это была моя ошибка при наборе текста.
SELECT uid,
code,
Sum(qtout) - Sum(qtin) AS Total
FROM input_data
GROUP BY uid,
code
Ваш код был очень близок. Вам просто нужно было агрегировать результат с помощью функции СУММА.
КУДА ограничивает ваш результат запрошенным [UID].
SELECT o.UID,
o.CODE,
SUM(QTOut) - SUM(QTIn) AS Total
FROM input_data o
WHERE o.UID = 'A'
GROUP BY UID,
CODE
Ожидаемый результат не имеет смысла. Почему результат для (UID=A, Code=1) 1000?