2011-06-03 10 views
-1

をDELETE私はこのテーブルの構造を持っている:SQL Serverの:DATEはIS重複<DATE

UNIQUE ID | TYPE | QUARTER | DATE 
1   | 1 |  JAN | 2/2/2222 
2   | 1 |  JAN | 4/2/2222 

どのように私は、古い日付が重複したレコードを削除しますか? MS SQL 2008で

+0

どのようなsqlサーバーのバージョンですか? –

+0

@alex私はそれが2008年だと思います。これはVS2010を内蔵したものです。私は確信していません。 –

+0

Typeが2、1月Quarter、Date 5/2/2222の場合、削除する必要がありますか?または言い換えれば、あなたは四分の一だけでグループ化する必要がありますかタイプによってもグループ化する必要がありますか? –

答えて

3

:任意のSQL重複日付フィールドを想定していない

delete 
from MyTable 
    where Date not in 
    (
     select Quarter, Min(DATE) 
     from MyTable 
     group by Quarter 
    ) 

with cte 
as 
(
    select *, row_number() over(partition by Quarter order by Date) RowNumber 
    from MyTable 
) 
delete cte 
where RowNumber > 1 

+0

@alex:「オーバーSQL構造体または文はサポートされていません。」 –

+0

@Pod Mays - これがバージョンについて尋ねられた理由です。別のクエリを試すことはできますか?私はあなたの日付が重複していないと仮定します。 –

+0

@Pod Mays:メッセージをグーグルで見つけよう。私がこれまでに集めたことから、何らかの理由でOVER構造をサポートしていないVSのクエリービルダーによってエラーが生成されたようです。 –