首页 > 解决方案 > 选择记录,直到值重复

问题描述

我有 3 个表(表 1、表 2 和表 3)的层次结构。用户可以从 Table1 中选择一条记录,然后将返回 Table2 中的所有记录,然后从 Table3 中返回,用户将看到 table3 中的记录。我需要将已经从 Table2 的先前记录集中选择的 Table3 中的记录排除在外。

表

因此,它应该只返回 Table3 中 ProdID 为 1,2 和 3 的 3 个元素加上 table2 的 SortNr(如果重复,则返回 Table2 中的最小值)。Table3 中的示例“Sausage”出现了两次,因此它应该返回 Min T2ID 的 Table2 的 SortNr。

我试过:

 ROW_NUMBER() OVER(PARTITION BY t3.T1ID, t3.ProdID ORDER BY t3.T1ID, t3.ProdID > 1

获得我需要但没有成功的记录。

我需要得到如下记录: 表2

编辑:

Select t3.nProdID, 
       t3.SortNr as nDetSort, 
       t3.Name as DetName, 
       t2.Name, 
       t2.SortNr, 
       t3.T2ID, 
       t2.T1ID, 
       t1.Name as MenuName, 
       ROW_NUMBER() OVER(PARTITION BY t3.T1ID, t3.ProdID ORDER BY t3.T1ID, t2.T2ID, t3.ProdID > 1 then 'duplicates' else 'first occurance' end
  from Table1 t1, 
       Table2 t2, 
       table3 t3 
 where t1.ID = t2.T1ID and t2.T1ID = t3.T1ID and t2.T2ID = t3.T2ID

我设法通过按顺序添加 t2.T2ID 来获得我想要的记录。但我需要做一件事。对于重复值,我想检查特定列是否具有特定值,如果没有,则从 Table2 中获取具有最小 T2ID 值的最小记录。

标签: sqloracle

解决方案


推荐阅读