Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 server OVER(order by)语句中的Where子句?_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql server OVER(order by)语句中的Where子句?

Sql server OVER(order by)语句中的Where子句?,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我有一个临时表,其中填充了如下各种产品: DECLARE @temp TABLE (ID int, productCode int, quantity int, Available bit, RunningTotal int) INSERT INTO @temp (ID, productCode, quantity, Available, RunningTotal) SELECT item.ID , item.ProductCode

我有一个临时表,其中填充了如下各种产品:

    DECLARE @temp TABLE (ID int, productCode int, quantity int, Available bit, RunningTotal int)
    INSERT INTO @temp (ID, productCode, quantity, Available, RunningTotal)
    SELECT
        item.ID
        , item.ProductCode
        , item.Quantity
        , item.available
        , SUM(item.Quantity) OVER (Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
    FROM dbo.item
LineID  | ProductCode |  Quantity  | Available | RunningTotal
001     |    00001    |    2       |    3      |     null
002     |    00002    |    2       |    3      |     null      
003     |    00001    |    2       |    3      |     2   
SUM(item.Quantity) OVER (PARTITION BY ProductID, Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
这就形成了这样的表格:

LineID  | ProductCode |  Quantity  | Available | RunningTotal
001     |    00001    |    2       |    3      |     null
002     |    00002    |    2       |    3      |     2      
003     |    00001    |    2       |    3      |     4   
我现在遇到的问题是,我希望运行总数只计算匹配的产品ID,但它将添加每个产品。该表应如下所示:

    DECLARE @temp TABLE (ID int, productCode int, quantity int, Available bit, RunningTotal int)
    INSERT INTO @temp (ID, productCode, quantity, Available, RunningTotal)
    SELECT
        item.ID
        , item.ProductCode
        , item.Quantity
        , item.available
        , SUM(item.Quantity) OVER (Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
    FROM dbo.item
LineID  | ProductCode |  Quantity  | Available | RunningTotal
001     |    00001    |    2       |    3      |     null
002     |    00002    |    2       |    3      |     null      
003     |    00001    |    2       |    3      |     2   
SUM(item.Quantity) OVER (PARTITION BY ProductID, Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
但我似乎不知道如何将此行更改为仅按productID分组

SUM(item.Quantity)(按item.productCode行排序,在无界的前一行和前一行之间)

更改为
Group By
将阻止我使用
ROWS BETHEN
子句。
我不想求
SUM
distinct item.quantity值,但我无法将其更改为distinct item.productCode值,因为我需要求和数量。我不确定Order By之后的
WHERE
条件可以使用什么语法,但我认为这可能是一个开始?

尝试按ProductID进行分区,如下所示:

    DECLARE @temp TABLE (ID int, productCode int, quantity int, Available bit, RunningTotal int)
    INSERT INTO @temp (ID, productCode, quantity, Available, RunningTotal)
    SELECT
        item.ID
        , item.ProductCode
        , item.Quantity
        , item.available
        , SUM(item.Quantity) OVER (Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
    FROM dbo.item
LineID  | ProductCode |  Quantity  | Available | RunningTotal
001     |    00001    |    2       |    3      |     null
002     |    00002    |    2       |    3      |     null      
003     |    00001    |    2       |    3      |     2   
SUM(item.Quantity) OVER (PARTITION BY ProductID, Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)

尝试按ProductID进行分区,如下所示:

    DECLARE @temp TABLE (ID int, productCode int, quantity int, Available bit, RunningTotal int)
    INSERT INTO @temp (ID, productCode, quantity, Available, RunningTotal)
    SELECT
        item.ID
        , item.ProductCode
        , item.Quantity
        , item.available
        , SUM(item.Quantity) OVER (Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
    FROM dbo.item
LineID  | ProductCode |  Quantity  | Available | RunningTotal
001     |    00001    |    2       |    3      |     null
002     |    00002    |    2       |    3      |     null      
003     |    00001    |    2       |    3      |     2   
SUM(item.Quantity) OVER (PARTITION BY ProductID, Order BY item.productCode ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)

效果很好,只是我必须去掉条件之间的逗号
partitionbyitem.productCode orderbyitem.productCode
效果很好,只是我必须删除条件之间的逗号<代码>按项目划分。产品代码按项目排序。产品代码