0

テーブルからレコードを削除する必要があるシナリオに直面しています。

シナリオは次のとおりです。最初のテーブルにはいくつかの日付値があり、2 番目のテーブルには年末 (日付) レコードのみが含まれています。最初のテーブルの値が 2 番目のテーブルにない場合、最初のテーブルからこのレコードを削除する必要があります。

以下は、最初のテーブルの日付値です

2009-06-30 00:00:00.000
2009-12-31 00:00:00.000
2011-11-30 00:00:00.000
2011-12-31 00:00:00.000

以下は、2 番目のテーブルの日付値です。

2005-12-31 00:00:00.000
2006-12-31 00:00:00.000
2007-12-31 00:00:00.000
2009-12-31 00:00:00.000

ここで両方のテーブルを比較すると、最初のテーブルの日付値 ('2011-12-31 00:00:00.000') は 2 番目のテーブルにはありません。したがって、最初のテーブルでこのレコードを単独で削除する必要があります。

次のクエリを使用していますが、必要な結果が得られません。

使用したクエリ

Select tmp.* from #temp tmp
Inner Join #temp1 tmp1
On tmp.Val_DT != tmp1.ye_dt
Where DATEPART(mm,tmp.Val_dt) = 12

注: 2 番目の表には、年末の日付のみが含まれています。

これを達成する方法は?

4

2 に答える 2

0

これは十分に単純なはずです

Delete from Table1 where Table1DateField not in (select Table2DateField from Table2)
于 2012-04-05T05:56:59.597 に答える
0

これを使うことで

select CONVERT(varchar(8),GETDATE(),5)

その日付のvarchar文字列を取得できます。つまり05-04-12、日付をこの形式のvarchar文字列として比較して、レコードを簡単に削除できます。

于 2012-04-05T05:59:38.380 に答える