2017-08-17 110 views
1

我有表結構: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 

,我想獲得電子商務的實際收盤數量紀錄股票。

回答

2
SELECT STOCKNO, 
     SUM(case when OP = '-' then -QTY else QTY end) as BALANCE 
FROM DT 
GROUP BY STOCKNO 
0

使用的情況下的總和

select STOCKNO, sum(case when OP = '+' then 1 else -1 end * QTY) as StockLevel 
from DT 
group by STOCKNO 
0

另一選項(只是爲了好玩)內部到CONCAT()的OP和數量

Select STOCKNO 
     ,Ttl = sum(convert(decimal(10,2),concat(OP,QTY))) 
from YourTable 
Group By STOCKNO 

退貨

STOCKNO Ttl 
12345 -15.00 
123456 9.00 
0
select STOCKNO,OP, sum(QTY) OVER(PARTITION BY STOCKNO,OP) as StockLevel 
from DT 
+2

請解釋這段代碼的作用。 – loki