2012-04-05 18 views
0

Ich bin konfrontiert mit einem Szenario, in dem ich Datensatz aus der Tabelle löschen muss.Zum Löschen von Datensätzen mit Abfrage

Das Szenario ist: Die erste Tabelle hat einige Datumswerte und die zweite Tabelle enthält nur Jahresabschlussdaten (Datum) allein. Wenn die Werte der ersten Tabelle nicht in der zweiten Tabelle sind, muss ich diesen Datensatz aus der ersten Tabelle löschen.

Im Folgenden werden die Datumswerte in der ersten Tabelle

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 

Die die Datumswerte in der zweiten Tabelle

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 

hier beide Tabellen in Vergleich folgenden sind, das Datum des ersten Tabelle Werte ('2011-12-31 00: 00: 00.000 ') ist nicht in der zweiten Tabelle. Daher muss ich diesen Datensatz in der ersten Tabelle löschen.

Ich verwende die folgende Abfrage, aber ich bekomme nicht das erforderliche Ergebnis.

Abfrage verwendet

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

Hinweis: Die zweite Tabelle, die das Jahresenddatum allein nur enthält.

Wie dies zu erreichen?

+0

Die ersten Tabellen '2009-06-30 00: 00: 00.000' und' 2011-11-30 00: 00: 00.000' sind ebenfalls nicht in der zweiten Tabelle. Warum nicht sie auch löschen? –

Antwort

0

sollte diese mit einfachen genug

Delete from Table1 where Table1DateField not in (select Table2DateField from Table2) 
0

sein

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

Sie eine varchar Zeichenfolge von diesem Zeitpunkt also 05-04-12 bekommen können und Sie können Ihre Datum als varchar Zeichenfolge in diesem Format vergleichen und löschen Sie Datensätze einfach.

Verwandte Themen