首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL计算组的记录,然后在表中追加结果。

SQL计算组的记录,然后在表中追加结果。
EN

Stack Overflow用户
提问于 2017-09-20 09:24:17
回答 4查看 37关注 0票数 1

我有一张桌子:

代码语言:javascript
复制
tbl_Trans
--------------------------------
|Instrument|Trans_Type|Quantity|
|----------+----------+--------|
|HFT 123   |DEB       |50000   |
|HFT 123   |DEB       |20000   | 
|HFT 123   |CRE       |10000   | 
|ZGS 425   |DEB       |40000   |
|ZGS 425   |DEB       |30000   |
--------------------------------

然后,我必须得到一个仪器的总数量基于Trans_Type栏。DEB表示添加,CRE表示减法。

代码语言:javascript
复制
Example:
For HFT 123, Quantity=50000+20000-10000
             Quantity=60000

然后,使用RES在Trans_Type列中将总量追加到表中。最后一个表应该如下所示:

代码语言:javascript
复制
--------------------------------
|Instrument|Trans_Type|Quantity|
|----------+----------+--------|
|HFT 123   |DEB       |50000   |
|HFT 123   |DEB       |20000   | 
|HFT 123   |CRE       |10000   | 
|ZGS 425   |DEB       |40000   |
|ZGS 425   |DEB       |30000   |
|HFT 123   |RES       |60000   |
|ZGS 425   |RES       |70000   |
--------------------------------

请帮帮忙。提前谢谢你。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-20 09:30:48

代码语言:javascript
复制
WITH CTE
AS 
(
  SELECT Instrument,
  Trans_Type,
  CASE WHEN Trans_Type = 'DEB' THEN Quantity ELSE Quantity * -1 END AS Quantity
  FROM Table1
)
SELECT Instrument, Trans_type, Quantity FROM Table1
UNION ALL
SELECT Instrument, 'RES',
  SUM(Quantity) AS Total
FROM CTE AS c
GROUP BY Instrument

在这里试试你自己

这会给你所需要的:

代码语言:javascript
复制
| Instrument | Trans_type | Quantity |
|------------|------------|----------|
|    HFT 123 |        DEB |    50000 |
|    HFT 123 |        DEB |    20000 |
|    HFT 123 |        CRE |    10000 |
|    ZGS 425 |        DEB |    40000 |
|    ZGS 425 |        DEB |    30000 |
|    HFT 123 |        RES |    60000 |
|    ZGS 425 |        RES |    70000 |
票数 4
EN

Stack Overflow用户

发布于 2017-09-20 09:31:59

可以使用分组选择获得总计,并将该选择的结果附加到表中。

这将是:

代码语言:javascript
复制
insert into tbl_Trans (Instrument, Trans_Type, Quantity)
       select Instrument, 'RES', 
              sum(case Trans_Type when 'DEB' then Quantity 
                                  when 'CRE' then - 1 * Quantity)
       from tbl_Trans
       where Trans_Type in ('DEB', 'CRE')
       group by Instrument    

该表现在将具有所需的内容:

代码语言:javascript
复制
|Instrument|Trans_Type|Quantity|
--------------------------------
|HFT 123   |DEB       |50000   |
|HFT 123   |DEB       |20000   | 
|HFT 123   |CRE       |10000   | 
|ZGS 425   |DEB       |40000   |
|ZGS 425   |DEB       |30000   |
|HFT 123   |RES       |60000   |
|ZGS 425   |RES       |70000   |
票数 0
EN

Stack Overflow用户

发布于 2017-09-20 09:36:20

在中

--基于Trans_Type求出仪器的总数量

从Trans_Type ('DEB','CRE')中选择tbl_Trans中的Trans_Type(‘DEB’,‘CRE’)中的总数量,选择仪器,SUM(IIF= 'CRE',-1* Quantity,Quantity)

-在表中追加总量

在tbl_Trans ( FROM,Trans_Type,Quantity)中插入“RES”作为Trans_Type,SUM( Trans_Type = 'CRE',-1*Quantity )从tbl_Trans中逐个选择Trans_Type ('DEB','CRE')

试着拉小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46318152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档