从另一行中减去一行

时间:2014-03-14 04:26:29

标签: mysql sql sql-server sql-server-2008 tsql

请帮助我,我一整天都无法解决这个问题 我有像

这样的行
Id   Serial  StockCode  StockTitle  ActionType  
1    123     D-005      Desk        Income      
2    345     C-005      Chair       Income      
3    123     D-005      Desk        Expense     
4    685     C-005      Chair       Expense     
5    345     C-005      Chair       Expense     

如果存在具有ActionType-Income的行,则插入结果行(使用UNION或其他),任务是计算股票序列平衡。 结果行应使用相同的Serial从另一行中减去一行。所以在我们的案例中 结果表应该看起来像

Id   Serial  StockCode  StockTitle  ActionType  
1    123     D-005      Desk        Income      
2    345     C-005      Chair       Income      
3    123     D-005      Desk        Expense     
4    685     C-005      Chair       Expense     
5    345     C-005      Chair       Expense  
___________________________________________
*    685     C-005      Chair       Balance 

The 

1 个答案:

答案 0 :(得分:1)

我建立了一个小提琴,将收入计为+1,费用为-1,并为每个序列号提供总计数。内置MySQL但似乎非常通用。

Select sum( IF(ActionType = 'Income', 1, -1) ) as Balance, 
 Serial, StockCode, StockTitle
 from Table1
GROUP BY serial;

最终以

结束
COUNT   SERIAL  STOCKCODE   STOCKTITLE
 0          123 D-005           Desk
 0          345 C-005           Chair
-1          685 C-005           Chair

根据你的例子,我认为是正确的。

http://sqlfiddle.com/#!2/ce8e0/1 sqlfiddle text-to-DDL导入是梦幻般的:)