2014-01-30 35 views
0

我想爲我的查詢獲取不同的值。我嘗試瞭如下,但我沒有得到正確的結果,任何人都會建議我如何解決問題。如何解決SQL Server 2005中的不同問題?

在這裏,我想明確part_id。

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

在此先感謝。

+0

'DISTINCT'會爲您提供**不同的值** **所有列**您選擇的不僅僅是其中之一 –

+0

給我查詢 – pankeel

+0

@marc_s那麼上面的解決方案是什麼一,有什麼建議? –

回答

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 

如果有一些規則確定哪一行應該返回(最舊/最新/無論),您只需訂購此列DESC而不是ORDER BY p.part order by part_id;

+0

謝謝你的回覆@dneoth。 –

0

開始時改變SELECT DISTINCT P.PART_ID FROM..並在末尾加上GROUP BY p.part_id

鮮明必須應用這些值是相同的所有列,所以你可以添加列,但reme​​nber到泰德添加到GROUP BY也