SQL-запрос для поиска Всего
У меня есть структура таблицы, как показано ниже:
STOCKNO QTY OP
12345 1.00 +
12345 25.00 -
12345 1.00 -
12345 10.00 +
123456 10.00 +
123456 1.00 -
Я хочу получить фактический кол-во каждого stockno по +, -
+ (i.e. Purchase Qty)
- (i.e. Sales Qty)
Но для вышеупомянутого я получаю общее количество покупки и количество продаж, используя запрос ниже:
SELECT STOCKNO, SUM(QTY) as QTY, OP
FROM DT
GROUP BY STOCKNO, OP
И я хочу получить фактическую итоговую запись по каждой акции.
4 ответа
Решение
SELECT STOCKNO,
SUM(case when OP = '-' then -QTY else QTY end) as BALANCE
FROM DT
GROUP BY STOCKNO
select STOCKNO,OP, sum(QTY) OVER(PARTITION BY STOCKNO,OP) as StockLevel
from DT
Другие варианты (просто для удовольствия) - это concat() OP и Qty
пример
Select STOCKNO
,Ttl = sum(convert(decimal(10,2),concat(OP,QTY)))
from YourTable
Group By STOCKNO
Возвращает
STOCKNO Ttl
12345 -15.00
123456 9.00
Используйте кейс внутри суммы
select STOCKNO, sum(case when OP = '+' then 1 else -1 end * QTY) as StockLevel
from DT
group by STOCKNO