如何解决SQL Server 2005中的独特问题?

时间:2014-01-30 12:53:17

标签: sql sql-server distinct

我正在尝试为查询获取不同的值。我尝试过如下,但我没有得到正确的结果,是否有人建议我如何解决问题。

这里我想区分part_id。

http://tinypic.com/view.php?pic=9scx21&s=8#.UupFqT2SzyQ

提前致谢。

2 个答案:

答案 0 :(得分:1)

为什么您认为结果不正确,返回的行不同。

DISTINCT应用于所有列,没有什么比给我一个DISTINCT(p.part_id)而且不关心其他列。

你可能想要的是每个part.id

的一行

如果您没有任何规则要返回哪一行,可以使用ROW_NUMBER:

select *
from 
 (
   select all your columns
      , row_number() over (partition by p.partid order by p.part_id) as rn
   from ....
   where ...
 ) as dt
 where rn = 1

如果有一些规则要确定应返回哪一行(最旧/最新/无论如何),您只需 ORDER BY此列DESC 而不是 ORDER BY p.part      按part_id排序;

答案 1 :(得分:0)

在开始时更改SELECT DISTINCT P.PART_ID FROM..并在结尾处添加GROUP BY p.part_id

必须对所有值相同的列应用Distinct,这样您就可以添加列,但记得将它添加到GROUP BY