我想爲我的查詢獲取不同的值。我嘗試瞭如下,但我沒有得到正確的結果,任何人都會建議我如何解決問題。如何解決SQL Server 2005中的不同問題?
在這裏,我想明確part_id。
http://tinypic.com/view.php?pic=9scx21&s=8#.UupFqT2SzyQ
在此先感謝。
我想爲我的查詢獲取不同的值。我嘗試瞭如下,但我沒有得到正確的結果,任何人都會建議我如何解決問題。如何解決SQL Server 2005中的不同問題?
在這裏,我想明確part_id。
http://tinypic.com/view.php?pic=9scx21&s=8#.UupFqT2SzyQ
在此先感謝。
爲什麼你認爲結果是不正確的,返回的行是不同。
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;
謝謝你的回覆@dneoth。 –
開始時改變SELECT DISTINCT P.PART_ID FROM..
並在末尾加上GROUP BY p.part_id
。
鮮明必須應用這些值是相同的所有列,所以你可以添加列,但remenber到泰德添加到GROUP BY也
'DISTINCT'會爲您提供**不同的值** **所有列**您選擇的不僅僅是其中之一 –
給我查詢 – pankeel
@marc_s那麼上面的解決方案是什麼一,有什麼建議? –