Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用相同的ID列递增地求和列值_Sql_Sql Server 2008 - Fatal编程技术网

Sql 使用相同的ID列递增地求和列值

Sql 使用相同的ID列递增地求和列值,sql,sql-server-2008,Sql,Sql Server 2008,我在SQL Server 2008中查询时遇到问题,我在internet上搜索了一下,但什么也没找到,或者它没有给我任何关于如何执行的想法 使用Northwind数据库,我需要查询OrderDetails表并选择OrderID和UnitPrice,显示如下内容: OrderID - UnitPrice ------------------------ 10248 - 14.00 10248 - 9.80 10248 - 34.80 102

我在SQL Server 2008中查询时遇到问题,我在internet上搜索了一下,但什么也没找到,或者它没有给我任何关于如何执行的想法

使用Northwind数据库,我需要查询OrderDetails表并选择OrderID和UnitPrice,显示如下内容:

OrderID   -    UnitPrice
------------------------
10248     -     14.00
10248     -     9.80
10248     -     34.80
10249     -     18.60
结果应该是:

OrderID   -    UnitPrice
------------------------
10248     -     14.00
10248     -     23.80
10248     -     58.6
10249     -     18.60
可参考以下内容:

SELECT t1.id,
       t1.unitprice,
       SUM(t2.unitprice) AS SUM
FROM t t1
INNER JOIN t t2 ON t1.id >= t2.id
GROUP BY t1.id,
         t1.unitprice
ORDER BY t1.id
演示:

请检查:

;with T as(
    select 
        *, 
        ROW_NUMBER() over (partition by OrderID order by OrderID) RNum
    from YourTable
)
select 
    *, 
    (select sum(UnitPrice) from T b where b.OrderID=a.OrderID and b.RNum<=a.RNum) CumTotal
From T a

试一试

我也很好奇如何在不使用临时表存储中间和的情况下解决这个问题。什么DB?Oracle可以轻松做到这一点,MSSQL 2012可能与-1重复,这是不正确的。他想对具有相同ID的行进行顺序求和,而不是连续ID。哇!它起作用了!。。。非常感谢@techdo。我在这里学习。。。谢谢,祝你今天愉快。。。。