0

我是 sql 新手。我有一个名为 emSaldos 的表,其中包含三个字段 IMPORTE、N_COMP、t_COMP 的记录。我只需要 N_comp 和 t_comp 的一种组合,因此我需要删除所有重复的减一,其 IMPORTE 字段必须具有具有相同 n_comp 和 t_comp 组合的其他记录的 IMPORTE 字段的总和。我无法正确地在 t-sql 上执行此操作,有什么帮助吗?有不懂的再问我。

更新:我设法完成了第一部分,将寄存器中的所有 IMPORTE 与相同的 n_comp、t_comp 相加,我现在只需要删除重复记录。

更新:我希望为每个 t_comp 和 n_comp 组合获得一条记录,其 IMPORTE 字段是具有相同 t_comp 和 n_comp 组合的所有记录的总和。我设法完成了第一部分,所有 IMPORTE 字段都有具有相同组合的所有记录的总和,现在我只需要删除所有具有相同组合的 t_comp 和 n_comp 减一的记录。

4

4 回答 4

1
select sum(IMPORTE) as 'importe', N_COMP,t_COMP
into #temp 
from table 
group by N_COMP,t_COMP;
delete table;
insert into table (importe, N_COMP, t_COMP) 
select (importe, N_COMP, t_COMP) from #temp;  
于 2013-08-30T19:02:42.143 回答
0

这应该从 emSaldos 中删除所有记录,这些记录对于每组 N-Comp 和 T_comp 没有最大导入,只为每个 N_comp/T_Comp 留下 1 条记录。但是,如果您有负数,这将无法满足您的需要。

Delete from emSaldos S
LEFT JOIN (Select max(importe) as importe, n_comp, T_Comp FROM emSaldos GROUP BY n_comp,T_Comp) S2 
 on S.Importe = S2.Importe 
and S.N_Comp  = S2.N_comp
and S.T_Comp = S2.T_COMP
WHERE SS2.Importe is null
于 2013-08-30T18:25:38.053 回答
0

我想你想要一个简单的聚合查询:

select sum(IMPORTE) as IMPORTE, N_COMP, t_COMP
from emSaldos s
group by N_COMP, t_COMP;

这将返回一个结果,其中是其他两个字段的每个组合的IMPORTE所有值的总和。IMPORTE

于 2013-08-30T18:22:02.990 回答
0

这就是答案

select sum(IMPORTE), N_COMP,t_COMP
from table 
group by N_COMP,t_COMP
于 2013-08-30T18:23:01.890 回答