Erhalten Sie einen ungültigen timerahmen von datasätzen, indem Sie ihren gültigen timerahmen angeben. (MSSQL)

Angenommen, ich habe Tisch wie unten:

Bildbeschreibung hier eingeben

Und ich möchte die Produkte auswählen, dass ihre ungültige timerahmen wie unten, gibt es eine effiziente Art und Weise, die nicht verwenden Cursor? Beachten Sie, dass die timerahmen Überlappungen haben können.

Bildbeschreibung hier eingeben

Scheint, ich brauche mehr Erklärung zu den oben genannten imageern. Das image 1 zeigt gültige timerahmen der Produkte. Jedes Produkt kann mehrere timerahmen haben, und seine timerahmen können Überlappungen haben. Ich möchte die ungültigen timerahmen aller Produkte auswählen.

Für das Produkt 1. seine gültigen Fristen sind [1/1 / 2013,1 / 1/2015] und [1/1 / 2014,1 / 1/2016], so dass es vor 1/1/2013 ungültig ist ([NULL, 12/31/2012]) und nach 1/1/2016 ([1/2/2016, NULL]), so zeigt pic 2 zwei Aufzeichnungen von Produkt 1.

Für Produkt 2 ist es auch ungültig zwischen (1/1 / 2014,1 / 1/2015), so dass drei datasätze gezeigt werden.