2012-09-12 151 views
0

我有一個表,看起來像下面 -GROUP BY多個列

Id  Reference  DateAttribute1 DateAttribute2 
    1  MMM005   2011-09-11  2012-09-10 
    2  MMM005   2012-06-13  2012-09-10 
    3  MMM006   2012-08-22  2012-09-10 
    4  MMM006   2012-08-22  2012-09-11 

我有手柄的ID值。我想查詢這樣,我得到以下結果

Id  Reference  DateAttribute1 DateAttribute2 
    2  MMM005   2012-06-13  2012-09-10 
    4  MMM006   2012-08-22  2012-09-11 

我想我的結果通過引用進行分組,然後「DateAttribute1」,然後「DateAttribute2」這樣 - DateAttribute1擁有DateAttribute2優先爲你在結果中可以看到上面的內容。
我應該如何編寫我的查詢以上述方式獲取結果?

任何解決方案?

+1

「DateAttribute1優先於DateAttribute2」Colud you plz explain? –

+0

基本上,在上面的情況下,如果有兩個引用具有相同的引用號,那麼syem應該查看dateattribute1以查看哪個日期更長,如果它們相同,則應該查看dateattribute2以檢查哪個是更大,然後最後返回相應的行。 – Tams

+0

檢查我的查詢..應該工作 –

回答

1
select max(id),Reference, min(DateAttribute1),max(DateAttribute2) 
group by Reference 
+0

我不認爲這會產生我期待的結果。 – Tams

+0

做了一個小編輯 – MichaelT

+0

這裏我們假設max(id),我不能假設在實際場景中。我錯過了什麼。基本上我想查詢,它返回與id的正確的行。 – Tams

0

試試這個:

select * 
from your_table t 
join (
     select Reference, 
      min(DateAttribute1) as DateAttribute1, 
      max(DateAttribute2) as DateAttribute2 
     from your_table 
     group by Reference 
    )a 
on t.Reference=a.Reference 
and t.DateAttribute1=a.DateAttribute1 
and t.DateAttribute2=a.DateAttribute2   
+0

仍然沒有得到正確的結果與上述代碼..非常感謝您的答覆反正...我錯過了什麼? – Tams

1
Try it..... 

SELECT * FROM通過參考

(SELECT * FROM憑身份證遞減your_table順序)爲x組
0

假設表名是'tbl2'

select * from (select * from tbl2 order by REFERENCE,DateAttribute1 desc, 
DateAttribute2 desc) as abc group by reference