2015-09-29 49 views
1

我有如下因素表:SQL重複卸妝

**CDU_NomeFicheiro     CDU_DataCriacao   CDU_Estado** 
FicheiroBanco.xls     2015-09-28 09:27:01.000 I 
FicheiroBanco.xls     2015-09-25 17:27:43.000 I 
FicheiroBanco20150928v1.2.xls  2015-09-29 16:03:12.000 I 
FicheiroBanco20150928teste11.xls 2015-09-28 09:45:15.000 I 
FicheiroBanco20150928teste.xls  2015-09-28 09:28:36.000 I 
FicheiroBanco20150928v1.2.xls  2015-09-29 16:03:11.000 E 

這是我的查詢:

select distinct CDU_NomeFicheiro as 'Ficheiro' 
, CDU_DataCriacao AS 'Data'  
from TDU_HistoricoIntegracoes 
where CDU_Estado = 'I' and CDU_NomeFicheiro is not null 
order by CDU_DataCriacao 

這是我的結果:

**Ficheiro       Data** 
FicheiroBanco.xls     2015-09-25 17:27:43.000 
FicheiroBanco.xls     2015-09-28 09:27:01.000 
FicheiroBanco20150928teste.xls  2015-09-28 09:28:36.000 
FicheiroBanco20150928teste11.xls 2015-09-28 09:45:15.000 
FicheiroBanco20150928v1.2.xls  2015-09-29 16:03:12.000 

這是結果我想要:

*FicheiroBanco.xls     2015-09-25 17:27:43.000* have to be removed 
FicheiroBanco.xls     2015-09-28 09:27:01.000 
FicheiroBanco20150928teste.xls  2015-09-28 09:28:36.000 
FicheiroBanco20150928teste11.xls 2015-09-28 09:45:15.000 
FicheiroBanco20150928v1.2.xls  2015-09-29 16:03:12.000 

它應該只顯示每個文件的最新行,刪除具有相同文件名的舊副本。

回答

3

您正在使用SELECT DISTINCT,但要選擇從幾個中的一個值的一列,你應該使用MAX()和GROUP BY來代替:

SELECT 
    CDU_NomeFicheiro AS 
    'Ficheiro', 
    MAX(CDU_DataCriacao) AS 'Data' 
FROM 
    TDU_HistoricoIntegracoes 
WHERE CDU_Estado = 'I' 
    AND CDU_NomeFicheiro IS 
    NOT NULL 
GROUP BY CDU_NomeFicheiro 
ORDER BY MAX(CDU_DataCriacao) 

編輯:自從我加入一個CDU_DataCriacao的集合函數,我也應該爲ORDER BY子句添加MAX()。我現在已經做了這個改變。它工作嗎?

+0

感謝您的及時答覆,但我得到了如下因素誤差 –

+0

感謝您的及時答覆,但我得到了如下因素誤差 消息8127,級別16,狀態1,行11 「TDU_HistoricoIntegracoes.CDU_DataCriacao」列在ORDER BY子句中無效,因爲它不包含在聚合函數或GROUP BY子句中。 –

+0

@ClovisRibeiro將其更改爲'ORDER BY Data',它是您在SELECT中使用的別名。我會使用不同的名稱,如'maxData'或其他 –

0

這項工作:

SELECT CDU_NomeFicheiro as 'Ficheiro' 
     ,MAX(CDU_DataCriacao) AS 'Data'  
    FROM [32851584_HistoricoIntegracoes] 
    WHERE CDU_Estado = 'I' and CDU_NomeFicheiro is not null 
    GROUP BY CDU_NomeFicheiro 
    ORDER BY Data