我正在尝试为查询获取不同的值。我尝试过如下,但我没有得到正确的结果,是否有人建议我如何解决问题。
这里我想区分part_id。
http://tinypic.com/view.php?pic=9scx21&s=8#.UupFqT2SzyQ
提前致谢。
答案 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