如果特定数据有多个记录,如何获得总和?

时间:2015-08-11 16:07:18

标签: mysql sql sql-server sql-server-2008

我有下表:

代码:

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都是不同且唯一的。我怎么能这样做?

2 个答案:

答案 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