Sql server SQL计算组的记录,然后将结果追加到表中
我有这张桌子:Sql server SQL计算组的记录,然后将结果追加到表中,sql-server,Sql Server,我有这张桌子: tbl_Trans -------------------------------- |Instrument|Trans_Type|Quantity| |----------+----------+--------| |HFT 123 |DEB |50000 | |HFT 123 |DEB |20000 | |HFT 123 |CRE |10000 | |ZGS 425 |DEB |40000 |
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_类型列得到仪器的总量DEB表示相加,CRE表示减法
Example:
For HFT 123, Quantity=50000+20000-10000
Quantity=60000
然后,应使用Trans_Type列中的RES将总量添加到表格中。
最终的表格应该如下所示:
--------------------------------
|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 |
--------------------------------
请帮忙。先谢谢你
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 |
这将为您提供所需的:
| 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 |
您可以使用分组选择获取总计,并将该选择的结果附加到表中 这将是:
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 |
您可以使用分组选择获取总计,并将该选择的结果附加到表中 这将是:
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 |
在MSSQL服务器中
--根据Trans_类型获取仪器的总量
选择仪器,
总和(IIF(交易类型='CRE',-1*数量,数量))为[总数量]
来自tbl_Trans,其中Trans_输入('DEB','CRE'))
按仪器分组
--在表中追加总数量
插入tbl_变送器(仪表、变送器类型、数量)
选择仪器,
“RES”作为[Trans_Type],
金额(IIF(交易类型='CRE',-1*数量,数量))为[数量]
来自tbl_Trans
其中Trans_输入('DEB','CRE')
按仪器分组
在MSSQL服务器中
--根据Trans_类型获取仪器的总量
选择仪器,
总和(IIF(交易类型='CRE',-1*数量,数量))为[总数量]
来自tbl_Trans,其中Trans_输入('DEB','CRE'))
按仪器分组
--在表中追加总数量
插入tbl_变送器(仪表、变送器类型、数量)
选择仪器,
“RES”作为[Trans_Type],
金额(IIF(交易类型='CRE',-1*数量,数量))为[数量]
来自tbl_Trans
其中Trans_输入('DEB','CRE')
按仪器分组
聪明。谢谢你这么聪明。谢谢你