0

我的表结构如下:

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

4 回答 4

2
SELECT STOCKNO,
       SUM(case when OP = '-' then -QTY else QTY end) as BALANCE
FROM DT 
GROUP BY STOCKNO
于 2017-08-17T10:54:16.260 回答
0
select STOCKNO,OP, sum(QTY) OVER(PARTITION BY STOCKNO,OP) as StockLevel
from DT
于 2017-08-17T11:06:42.910 回答
0

另一个选择(只是为了好玩)是 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
于 2017-08-17T10:59:18.650 回答
0

在 sum 中使用 case

select STOCKNO, sum(case when OP = '+' then 1 else -1 end * QTY) as StockLevel
from DT
group by STOCKNO
于 2017-08-17T10:56:10.083 回答