2015-05-04 45 views
0

我有一個SQL這給了我下面的輸出:SQL甲骨文發現相同的數據,並採取最新的一個

 column1 column2 column3 column4  column5 column6 column7 column8 column9 

#1 blabla blabla 15.10.2012 30.11.2014 7224 blabla blabla blabla blabla 
#2 blabla blabla 14.20.2011 30.11.2013 7224 blabla blabla blabla blabla 

column3column4是DATE。

我的SQL:

select column1, column2, column3, column4, column5, 
(SELECT ov_merkmalwertid FROM V_OV_MERKMALWERT WHERE objektfk = table2.OV_OBJEKTID AND MERKMAL = 'censored1') column6, 
(SELECT ov_merkmalwertid FROM V_OV_MERKMALWERT WHERE objektfk = table2.OV_OBJEKTID AND MERKMAL = 'censored2') column7, 
(SELECT ov_merkmalwertid FROM V_OV_MERKMALWERT WHERE objektfk = table2.OV_OBJEKTID AND MERKMAL = 'censored3') column8, 
(SELECT ov_merkmalwertid FROM V_OV_MERKMALWERT WHERE objektfk = table2.OV_OBJEKTID AND MERKMAL = 'censored4') column9 
from 
table1, 
table2 
where 
table1.DEVICEID = table2.OV_OBJEKTID; 

正如你可以看到日期#1 column4#2 column4 「更新」。

我需要一個SQL給我輸出,但檢查column5中的數字是否相同。如果它們是相同的,它只是向我顯示在column4中具有最新DATE的數據。

最終的結果應該沒有顯示#2

回答

1

您可以使用ROW_NUMBERcolumn5最近column4日期以獲得記錄:

SELECT * 
FROM (
select ROW_NUMBER() OVER (PARTITION BY column5 ORDER BY column4 DESC) AS rn, 
     column1, column2, column3, column4, column5, ... etc 
FROM table1 
INNER JOIN table2 ON table1.DEVICEID = table2.OV_OBJEKTID) t 
WHERE t.rn = 1; 

你也應該使用ANSI標準JOIN語法,就像在上面的查詢中一樣。通過column5column4和組

+0

謝謝你幫我出的! – piguy

1

選擇MAX

SELECT column1, column2, column3, MAX(column4), column5, 
     (SELECT ov_merkmalwertid 
      FROM V_OV_MERKMALWERT 
     WHERE objektfk = table2.OV_OBJEKTID 
      AND MERKMAL = 'censored1') column6, 
     (SELECT ov_merkmalwertid 
      FROM V_OV_MERKMALWERT 
     WHERE objektfk = table2.OV_OBJEKTID 
      AND MERKMAL = 'censored2') column7, 
     (SELECT ov_merkmalwertid 
      FROM V_OV_MERKMALWERT 
     WHERE objektfk = table2.OV_OBJEKTID 
      AND MERKMAL = 'censored3') column8, 
     (SELECT ov_merkmalwertid 
      FROM V_OV_MERKMALWERT 
     WHERE objektfk = table2.OV_OBJEKTID 
      AND MERKMAL = 'censored4') column9 
    FROM table1, 
     table2 
WHERE table1.DEVICEID = table2.OV_OBJEKTID 
GROUP BY column5; 
+0

非常感謝您的幫助 - 您的號碼是什麼意思? Maqybe專欄5? – piguy

+0

是的,確切地說。抱歉! ** ps **:請注意,如果'column4'中的日期存儲爲'VARCHAR',則'MAX'不起作用 – Trinimon

+1

一般GROUP BY規則說: 如果指定了GROUP BY子句,則每個列引用SELECT列表必須標識分組列或者是設置函數的參數。 – jarlh