2016-04-07 7 views
0

私はこのクエリで数日間作業しています。だから私はデータベースを持っており、サーバーは1日に1つ更新する必要があります。それが1日2回または3回更新された場合、私は重複を持っています。 DATETIMEの値Date_Insertedによって重複を見つけることができます。日付が更新される他のDATETIME値もあります。私は重複を持っているとき、私は、私は300件の以上のレコードを持っていると私は、このクエリによってそれを見つけることができたときにそれは、理解することができます:私は重複が起こったときに見たいさらにSQLサーバーの削除によって複雑なクエリが複写される

SELECT Date_Inserted, Date_Last_Updated, COUNT(Date_Inserted) 
    FROM dbo.[Yacht&Sail_Analytical] 
    GROUP BY Date_Inserted, Date_Last_Updated 
    HAVING COUNT(Date_Inserted) > 300 

、私はこれによってそれを見つけることができますクエリ:だから私はちょうど特定の時間に特定の日に作成されたレコードを削除するよう

SELECT TOP (100) PERCENT Date_Last_Updated, Date_Inserted, COUNT(*) AS Expr1 
    FROM  dbo.[Yacht&Sail_Analytical] 
    GROUP BY Date_Last_Updated, Date_Inserted 
    HAVING (Date_Last_Updated = '2015 - 12 - 10 00:00:00.000') 
    ORDER BY Expr1 DESC. 

、私はSELECTクエリから見つけることができるものは、私はこの

DELETE 
FROM dbo.[Yacht&Sail_Analytical] 
WHERE Date_Last_Updated NOT IN 
(SELECT Date_Inserted, Date_Last_Updated, COUNT(Date_Inserted) 
      FROM dbo.[Yacht&Sail_Analytical] LEFT JOIN 
      (SELECT Date_Last_Updated, Date_Inserted, COUNT(*) AS Expr1 
       FROM  dbo.[Yacht&Sail_Analytical] 
       GROUP BY Date_Last_Updated, Date_Inserted 
       HAVING (Date_Last_Updated = '2015 - 12 - 10 00:00:00.000')) AS ID 
       ) 
) 
を使用しています

は動作しません。私は間違って何をしていますか?

エラーメッセージ:

メッセージ102、レベル15、状態1、行9付近に正しくない構文 ')'。

+1

左結合の結合条件を欠落していますか? – jarlh

+0

HAVING(Date_Last_Updated = '2015 - 12 - 10 00:00:00.000'))AS ID => last)はそうはいけないと思います。それはAS IDの後のものです。 – diedie2

+0

私はちょうど両方を使わずに試しましたが、私はまだエラーが出ます。しかし、ありがとう。 – ion

答えて

1

私はもう少しこれに取り組んだ。クエリが正しく構築されませんでした。私のために働いたのは:

DELETE 
FROM dbo.[Yacht&Sail_Analytical] 

WHERE 
(
MONTH(Date_Inserted)=12 AND 
YEAR(Date_Inserted)=2015 AND 
DAY(Date_Inserted)=11) 

AND 
[a/a] IN 
(SELECT [a/a] 
FROM dbo.[Yacht&Sail_Analytical] 
WHERE Date_Inserted > CONVERT (DATETIME,'2015-12-11 16:00:00.457')) 

これははるかに簡単です。 *

a/aはすべての行に固有のIDです。

    *