我有下表:
select
ID
User_ID
FINAL_SETTLEMENT
EASEMENT_AREA
EASEMENT_AREA_COST
EASEMENT_AREA_PERCENT
from tblpaymentnegotiations where user_id = 69
注意:此表中的用户ID都不同。我以此为例
我已经在UI上完成了这个场景,并且有一个面板,用户可以在其中插入他们拥有的特定土地的付款谈判。在这种情况下,我有缓和区域,我想知道:如果最终结算列的面板中有多个/多个记录,如何计算总和?所以说ID 2
没有开始,只有ID 1
如果我在该面板中创建一个新记录并输入数字,保存它,一个新的ID /记录{ {1}}将添加到表格中。如果其他用户添加更多的地毯编号,则同样适用,因为每个user_id都是不同且唯一的。我怎么能这样做?
答案 0 :(得分:0)
这将通过user_id为您提供final_settlement的总和。
SELECT
User_ID
,SUM(FINAL_SETTLEMENT)
FROM tblpaymentnegotiations
GROUP BY User_ID
如果您正试图保持"运行"表格中的final_settlement,这可能不是一个好主意 - 每次插入记录时,您都可能会更新表格中的许多记录。而是使用上面的SELECT查询创建一个视图。
答案 1 :(得分:0)
对于SQL Server 2008及更高版本,最佳查询将类似于
select
ID,
User_ID,
SUM(FINAL_SETTLEMENT) OVER (PARTITION BY User_ID) as FINAL_SETTLEMENT,
EASEMENT_AREA,
EASEMENT_AREA_COST,
EASEMENT_AREA_PERCENT,
from tblpaymentnegotiations where user_id = 69
请注意,上述查询将返回所有行。 如果您只需要最后一行,请使用以下查询
select * from
(select
ID,
User_ID,
SUM(FINAL_SETTLEMENT) OVER (PARTITION BY User_ID) as FINAL_SETTLEMENT,
ROW_NUMBER() OVER(PARTITION BY User_ID ORDER BY ID DESC) as rownum,
EASEMENT_AREA,
EASEMENT_AREA_COST,
EASEMENT_AREA_PERCENT,
from tblpaymentnegotiations where user_id = 69) t
where t.rownum=1