2014-10-02 62 views
1

我有一個顯示以下數據的MS Access查詢。基於重複值篩選行的SQL查詢

enter image description here

我想寫一些SQL在執行時,會顯示如下的結果。

enter image description here

我的規則如下,並且是基於字段5

如果Field5 <>'C'中的值那麼只顯示任何其他值的1行。

我開始玩弄子查詢並使用First運算符,但由於表中的所有其他值都是唯一的,所以仍然顯示所有行。

這是我可憐的嘗試:

SELECT T.Field1, T.Field2, T.Field3, T.Field4, First(T.Field5) AS FirstOfField5 
FROM Table1 as T 
GROUP BY T.Field1, T.Field2, T.Field3, T.Field4 
ORDER BY First(T.Field5); 

任何幫助將是巨大的。

回答

2

如果我們假設field1是每行唯一的,你可以這樣做:

SELECT T.Field1, T.Field2, T.Field3, T.Field4, T.Field5 
FROM Table1 as T JOIN 
    (SELECT t.Field5, MIN(t.Field1) as Field1 
     FROM table1 
     GROUP BY t.Field5 
    ) as tt 
    ON tt.Field1 = t.Field1 or t.Field5 = 'C'; 

這將是更難,如果你沒有一個行的唯一標識符。

+0

感謝您的幫助。我在我的數據庫中使用了你的SQL子查詢,並對它進行了一些調整,並且它可以起到一定的作用。 – Eddie 2014-10-06 14:14:46