SQL – Legen Sie ein, wenn die Anzahl der Zeilen größer ist als

Ich habe eine SQL-Abfrage erstellt, die Zeilen aus einem Oracle-verknüpften server zurückgibt. Die Abfrage funktioniert gut und wird zum Beispiel 40 Zeilen zurückgeben. Ich möchte, dass die Ergebnisse nur in eine Tabelle eingefügt werden, wenn die Anzahl der zurückgegebenen Zeilen größer als 40 ist.

Mein Denken wäre dann, dass ich einen Auslöser schaffen könnte, um eine E-Mail auszurüsten, um zu sagen, dass die Nummer verletzt worden ist.

 DECLARE @cnt INT SELECT @cnt = COUNT(*) FROM Linkedserver.database.schemaname.tablename IF @cnt > 40 INSERT INTO table1 VALUES(col1, col2, col3 .....) 

Erstellen Sie Prozedur in sqlserver und verwenden Sie count () – function für bedingte Überprüfung für Zeilenzähler oder verwenden Sie @@ ROWCOUNT.

 if ((select count(*) from Oraclelinkservertable) > 40) begin -- code for inserting in your table Insert into tablename select * from Oraclelinkservertable end 

Lassen Sie uns sagen, dass die Abfrage ist:

 select a.* from remote_table a 

Jetzt können Sie die Abfrage ändern:

 select a.*, count(*) over () as cnt from remote_table a 

und enthält die Anzahl der Zeilen.

Nächster,

 select * from ( select a.*, count(*) over () as cnt from remote_table a ) where cnt > 40; 

wird nur zurückkehren, wenn die Anzahl der Zeilen größer als 40 ist.

Alles was du tun musst, ist

 insert into your_table select columns from ( select columns, count(*) over () as cnt from remote_table a ) where cnt > 40; 

und wird nur insert, wenn Sie mehr als 40 Zeilen in der Quelle haben.

Versuchen Sie es mit OFFSET.

 SELECT * FROM tableName ORDER BY colName OFFSET 40 ROWS