我有一张桌子:
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表示减法。
Example:
For HFT 123, Quantity=50000+20000-10000
Quantity=60000然后,使用RES在Trans_Type列中将总量追加到表中。最后一个表应该如下所示:
--------------------------------
|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 |
--------------------------------请帮帮忙。提前谢谢你。
发布于 2017-09-20 09:30:48
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在这里试试你自己
这会给你所需要的:
| 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 |发布于 2017-09-20 09:31:59
可以使用分组选择获得总计,并将该选择的结果附加到表中。
这将是:
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 该表现在将具有所需的内容:
|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 |发布于 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')
试着拉小提琴
https://stackoverflow.com/questions/46318152
复制相似问题