SQL筛选器查询重复结果

时间:2016-03-21 15:51:35

标签: sql sql-server

我正在使用SQL Server 2012并执行以下查询:

SELECT StockAct.CodAlm, StockAct.CodArt, MovStock.units
FROM MovStock,
     StockAct
WHERE MovStock.CodArt = StockAct.CodArt
  AND MovStock.CodAlm = StockAct.CodAlm

结果如下:

CodAlm  CodArt  Units

0001    BA2 -25
0001    BA2 -25
0001    BA2 -25
0002    BA2 -9
0002    BA2 -9
0002    BA2 -9
0002    BA2 -9
0003    BA2 60
0003    BA2 60
0003    BA2 60
0003    BA2 60

目标是进行查询或以零(第一个除外)返回重复值的内容:

0001    BA2 -25
0001    BA2 0
0001    BA2 0
0002    BA2 -9
0002    BA2 0
0002    BA2 0
0002    BA2 0
0003    BA2 60
0003    BA2 0
0003    BA2 0
0003    BA2 0

值总是重复(因此它们是1 1 1,2 2 2 ... n n n。)

考虑到每一个案例,连续结果可能是3或4。

GROUP BYDISTINCT无法正常工作,因为查询会返回更多具有不同值且不相等的列(我只是展示了这些以简化此示例)。

在其他编程语言中,这可以通过以下方式解决:如果codalm和codart与最后结果匹配则显示0,否则显示 units.value

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用x分配行号。然后使用10表达式为每个组选择第一行的实际单位,否则为0。

row_number