【发布时间】:2013-02-06 01:46:28
【问题描述】:
TSQL 2008 R2
对于给定的 PO#,我有重复的行项目,每个项目都有自己的唯一 ID。我需要删除重复项。我不知道每个 PO# 有多少重复项。因为有一个#LineItems 我知道我只想要第一个(顶部)x(#lineIems)行项目。
我有一张这样的桌子:
LineitemID PO# #LineItems
---------- ------- ----------
11111111 12345 3
22222222 12345 3
33333333 12345 3
44444444 12345 3
55555555 12345 3
66666666 12345 3
77777777 54321 2
88888888 54321 2
99999999 54321 2
10101010 54321 2
...
我需要这样一张桌子:
LineitemID PO# #LineItems
---------- ------- ----------
11111111 12345 3
22222222 12345 3
33333333 12345 3
77777777 54321 2
88888888 54321 2
...
所以基本上有办法做这样的事情:
DECLARE @top int = (SELECT TOP 1 FROM tblLineItems t WHERE t.PO# = @PO)
SELECT TOP (@top)
FROM tblLineItems
每个 PO# 都这样做
【问题讨论】:
-
感谢@LittleBobbyTables。你只是写了我的想法!编辑: Previoius 评论已被删除 - 所以你能解释一下你想要的输出吗?为什么第 4444444、5555555、666666 行不见了?消除线条的当之无愧的规则是什么?第 888888 行的 po# 43125 来自哪里?
-
哦,我明白你现在要做什么了。 @Nico - LineItems 列确定每个 PO# 返回的行数。 Archangel33,当您说“消除”时,您的意思是“从查询中排除”还是“从表中删除”?
-
@LittleBobbyTables 如果 LineItems 描述每个 PO# 返回多少行 - LineitemID 为 7777777 和 888888 的第二行在所需的 OP 表中在哪里?
-
@LittleBobbyTables 是的,当我说消除时,我的意思是从表中删除。
-
@Nico 抱歉,PO# 43125 是一个错误,我已在问题中解决了这个问题。 #LineItems 列确定结果表中需要多少行
标签: sql tsql select sql-server-2008-r2