首页 > 解决方案 > 上一个值的 SQL 帮助

问题描述

嗨,我有这样的桌子

在此处输入图像描述

我需要最后一列父项的结果

在此处输入图像描述

如果 Lvl = 1,父项列应获取产品编号的值,然后在 Lvl=0 的情况下填充产品无值,如果 Lvl=2,则在 lvl=1 的情况下填充产品无值。我尝试使用以下查询但没有得到正确的输出

select ABC, lvl as Lvl,Product_no,
   case        
              when lvl = 1  then lag(ref) over(order by ABC) 
               when lvl = 2 then lag(ref) over(order by ABC ) end   as  

[父项]

另一个示例 在此处输入图像描述

标签: sqlsql-servertsql

解决方案


我可以帮你查询:

Select 
T1.ABC, 
T1.Lvl, 
T1.ProductNo,
(Select ProductNo From TableName where Lvl = T1.Lvl - 1) as parantProduct
From TableName T1

这确实考虑到是否可以有多个父项。

如果您应该能够正确获取最后一行,则需要更多信息(ProductNo L97****)


推荐阅读