获取所有数据,仅显示返回的相关数据

时间:2011-05-21 19:20:04

标签: sql loops

我的任务是在不重写项目的情况下更改其他人的代码。我有一个sql语句,它从客户表中获取所有数据。回报得到:

Inum - which can have many of the same entries.
Istep - Which is unique but bound to above.
Istage - which is unique and bound to above.

它像这样说:

10010 - 100 - 999
10010 - 101 - 888
10010 - 102 - 777
10018 - 100 - 999
10018 - 130 - 555
10026 - 300 - 333

我想获得每组的第一个Inum,以便得到:

10010 - 100 - 999
10018 - 100 - 999
10026 - 300 - 333

然后我将剥离最后一部分--Istep并允许在全部(VB.NET)中发生索引更改时将其分配给脚本 我需要不断获取所有数据,因为它被打包到页面上的var中,并且会根据其当前内容反复使用。我可能需要在VB中完成它,不确定。

添加(基于第一个答案): @eaolson - 谢谢你的回复。抛开总体错字......我本来应该更清楚。 Istep是我们流入的独特之处,因为我们每个项目(Inum)一次只能是一个地方。但他们都在数据库和它被拉出的方式都回来了。 Istage也是如此。它是我们所处的步骤的独特之处,但是所有阶段和步骤都会被拉到当前点。没有我可以找到的rowguides或唯一ID。他们以这种方式完成了大多数表格,并且很难做出一些改变。我想要的是一个单一的Inum。因此,呼叫获得第一个Inum 10010,然后忽略其余部分,直到它变为10018,然后跳过10018的其余部分直到更改10026,跳过其余部分直到下一个10023等等。我仍然需要所有*数据包装它变成了一个var,从那里拉下来。我很难过。我正在考虑将其拉入数据网格(.NET)并将其用于其余的调用。但是如果可能的话,我宁愿在SQL中这样做,因为我知道我将需要一遍又一遍地做这个,因为它的构建方式。感谢。

1 个答案:

答案 0 :(得分:1)

当你说“第一价值”时,你的意思是“最低价值”吗?行表顺序不一定保证在表格中。

SELECT t1.inum, t1.istep, t1.istage
  FROM mytable t1
 INNER JOIN (
    SELECT inum, MIN(istep) as min_istep
      FROM mytable
     GROUP BY inum ) t2 ON t2.inum = t1.inum AND t2.min_istep = t1.istep

您还说istep和istage是“唯一的”,但它们在您的示例中具有重复值。我认为(inum,istep)是你的主键。