Sql server SQL Server:查看CASE WHEN THEN ELSE END ROWNUMBER+;最后一个值

Sql server SQL Server:查看CASE WHEN THEN ELSE END ROWNUMBER+;最后一个值,sql-server,view,case-when,qsqlquery,Sql Server,View,Case When,Qsqlquery,我试图在每一行添加同一物品最后数量的值。我该怎么做?以下是我认为可能有效的想法: USE [Data_Test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[View_Solde] AS SELECT [ItemCode] ,[Doc_#/Stock_Min] ,[DocDate] ,[Qty] ,[DESCR] , Solde = CASE ItemCode WH

我试图在每一行添加同一物品最后数量的值。我该怎么做?以下是我认为可能有效的想法:

USE [Data_Test]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[View_Solde]
AS
SELECT [ItemCode]
  ,[Doc_#/Stock_Min]
  ,[DocDate]
  ,[Qty]
  ,[DESCR]
  , Solde =
  CASE ItemCode
  WHEN ItemCode.Row2"="ItemCode.Row1 THEN Qty.Row2"+" Solde.Row1 ELSE Qty.Row2 END
  WHEN ItemCode.Row3"="ItemCode.Row2 THEN Qty.Row3"+" Solde.Row2 ELSE Qty.Row3 END
  WHEN ItemCode.Row4"="ItemCode.Row3 THEN Qty.Row4"+" Solde.Row3 ELSE Qty.Row4 END
  WHEN ItemCode.Row5"="ItemCode.Row4 THEN Qty.Row5"+" Solde.Row4 ELSE Qty.Row5 END
  WHEN ItemCode.Row6"="ItemCode.Row5 THEN Qty.Row6"+" Solde.Row5 ELSE Qty.Row6 END
  WHEN ItemCode.Row7"="ItemCode.Row6 THEN Qty.Row7"+" Solde.Row6 ELSE Qty.Row7 END
  WHEN ItemCode.Row8"="ItemCode.Row7 THEN Qty.Row8"+" Solde.Row7 ELSE Qty.Row8 END
  WHEN ItemCode.Row9"="ItemCode.Row8 THEN Qty.Row9"+" Solde.Row8 ELSE Qty.Row9 END
  WHEN ItemCode.Row10"="ItemCode.Row9 THEN Qty.Row10"+" Solde.Row9 ELSE Qty.Row10 END
  WHEN ItemCode.Row11"="ItemCode.Row10 THEN Qty.Row11"+" Solde.Row10 ELSE Qty.Row11 END
  WHEN ItemCode.Row12"="ItemCode.Row11 THEN Qty.Row12"+" Solde.Row11 ELSE Qty.Row12 END
  WHEN ItemCode.Row13"="ItemCode.Row12 THEN Qty.Row13"+" Solde.Row12 ELSE Qty.Row13 END
  WHEN ItemCode.Row14"="ItemCode.Row13 THEN Qty.Row14"+" Solde.Row13 ELSE Qty.Row14 END
  WHEN ItemCode.Row15"="ItemCode.Row14 THEN Qty.Row15"+" Solde.Row14 ELSE Qty.Row15 END
  WHEN ItemCode.Row16"="ItemCode.Row15 THEN Qty.Ro16"+" Solde.Row15 ELSE Qty.Row16 END
  WHEN ItemCode.Row17"="ItemCode.Row16 THEN Qty.Row17"+" Solde.Row16 ELSE Qty.Row17 END
  WHEN ItemCode.Row18"="ItemCode.Row17 THEN Qty.Row18"+" Solde.Row17 ELSE Qty.Row18 END
  WHEN ItemCode.Row19"="ItemCode.Row18 THEN Qty.Row19"+" Solde.Row18 ELSE Qty.Row19 END
  WHEN ItemCode.Row20"="ItemCode.Row19 THEN Qty.Row20"+" Solde.Row19 ELSE Qty.Row20 END
ORDER BY [ItemCode]


GO
我试着用

SELECT TOP 100 [ItemCode]
  ,[Doc_#/Stock_Min]
  ,[DocDate]
  ,[Qty]
  ,[DESCR],
  sum(Qty) over (partition by ItemCode) as Solde
  FROM [Data_Warehouse].[dbo].[Inventory]
  order by ItemCode

它返回我想要的结果,但并不完全是因为我只是看到所有的结果都具有相同的值,我也希望能够看到自上一个结果增加了多少。

尝试类似的方法。它按分区计算运行总数

DECLARE @t TABLE (
    EmployeeId BIGINT NOT NULL,
    Val INT NOT NULL,
    Stamp DATE NOT NULL
);

INSERT INTO @t
(EmployeeId,Val,Stamp)
VALUES
(1,10,'2018-10-01'),
(2,10,'2018-10-03'),
(3,10,'2018-10-02'),
(3,10,'2018-10-04'),
(4,10,'2018-10-06'),
(5,10,'2018-10-05'),
(6,10,'2018-10-07'),
(7,10,'2018-10-09'),
(7,10,'2018-10-08'),
(7,10,'2018-10-10');

SELECT
    t.EmployeeId,
    t.Val,
    t.Stamp,
    SUM(t.Val) OVER (PARTITION BY t.EmployeeId ORDER BY t.Stamp ROWS UNBOUNDED PRECEDING) AS RunningTotalByGroup
FROM @t AS t
ORDER BY t.Stamp
以下是一些很好的参考资料:


大家好,欢迎来到SO。你好像漏了几块。你的观点中没有FROM条款。那么“=”应该是什么呢?还是“+”?考虑到我在您的观点中假设的列的名称,我有一种感觉,真正的问题是缺乏规范化。由于视图完全无效,并且不确定该视图与您在其之后发布的查询有何关系,因此目前无法回答此问题。也许<代码>数量+滞后(数量)超过(按项目划分代码按日期排序)?很难看出您想要的是什么我很困惑,为什么会有像
row1
row2
这样的列?另外,第一批SQL中的运算符用双引号括起来,并且有一批
CASE
表达式没有逗号分隔,因此无法编译。样本数据和预期结果将在这里有所帮助。数据的图像没有帮助?要得到真正的帮助,你需要发布真实的信息。这是一个很好的开始。问题有点不清楚,但从它的声音,你想要一个运行总数,但只是在每个项目代码,是吗?