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
Другие вопросы по тегам