2013-04-02 258 views
2

我現在有一個示例輸出:我們稱之爲表X和屬性x.name,x.title,x.best x.lowest如何只顯示1行給出1列在SQL中具有相同的值

NAME     TITLE      BEST   LOWEST 
-------------------- ------------------------- --------------- ------- 
Andy Aardverk  Avarice is Good   CARP    215.95 
Andy Aardverk  Avarice is Good   YRB Bronze  215.95 
Andy Aardverk  Yon-juu Hachi    CARP    41.95 
Andy Aardverk  Yon-juu Hachi    YRB Bronze  43.95 

鑑於最後一列重複值爲215.95的事實,我想只顯示2行中包含相同值的行中的1行。所以,我想它來顯示這樣的事情

NAME     TITLE      BEST   LOWEST 
-------------------- ------------------------- --------------- ------- 
Andy Aardverk  Avarice is Good   CARP    215.95 
Andy Aardverk  Yon-juu Hachi    CARP    41.95 
Andy Aardverk  Yon-juu Hachi    YRB Bronze  43.95 

我知道我可以只拿出X.best,它會給我的唯一行的問候X.lowest,但我需要的屬性X.best以後再查詢。 我試過

select distinct x.name, x.title, x.best, x.lowest 

但它沒有幫助。

任何幫助表示讚賞。

+0

任何邏輯你爲什麼返回CARP與YRB青銅? – sgeddes

回答

1

如果最低列重複,或者名稱,標題和最低列重複,您是否想顯示單行?

通常情況下,您應該有保留哪一行的條件,但如果沒有關係,則可以使用簡單的GROUP BYMAXMIN工作。這是假設你關心的名稱和標題是不同的,以及:

SELECT name, title, MIN(best) best, lowest 
FROM tablex 
GROUP BY name, title, lowest 

SQL Fiddle Demo

如果你只關心不同的最低場,你可以利用ROW_NUMBER()

SELECT name, title, best, lowest 
FROM (
    SELECT name, title, best, lowest, 
     ROW_NUMBER() OVER (PARTITION BY lowest ORDER BY lowest) rn 
    FROM tablex 
) X 
WHERE rn = 1 

More Fiddle

+0

是啊,我只想顯示一行,如果最低的一列是重複的,你提供的第二部分已經修復了!謝謝 –

+0

@adrianng ==很好,很高興我能幫忙! – sgeddes

+0

如果我想做一個查詢,如上所述,如果有重複標題(第3行和第4行),選擇最小最低值,我會只使用min聚合函數來只顯示行1和3? –

相關問題