Was zu tun ist, möchte ist folgendes:SQL in Spalten innerhalb Cursor Zählen
declare @Count numeric (10)
set @Count = 0
set @Count = (select count(*) from FILENAME where COLUMNNAME like '%e%')
print(@tel)
Ich möchte es auf ein paar Dateien durchgeführt werden kann, die eine Menge von Spalten und haben eine Gesamtzahl für alle Spalten , so meine Idee, eine column jeder Datei von doint so etwas wie zu bekommen war:
select * from sys.columns
where object_id = (select object_id from sys.objects where name = 'FILENAME')
Nun ist die einfachste Art, wie ich gedacht hätte, einen Cursor verwenden und haben die @Counts aufaddiert dort in einer anderen variablen. Aber das Problem, das ich habe, ist, dass, wenn COLUMN in einer Variablen in dem Cursor kann ich nur (soweit ich weiß), um die Abfrage wie:
declare @SQL varchar(max)
set @SQL = @SQL + 'set @Count = (select count(*) from FILENAME where '
+ @columnname + ' like ''%e%'')'
set @tot_Count = @tot_Count + @Count
Aber wie ich sie verstehe um dynamische SQL innerhalb einer vom Lesen Der Cursor ist ein großes Nein. Und obwohl, wenn ich die "print (sql)" sehe, scheinen die Abfragen richtig zu sein, scheint es tatsächlich nicht in einem cursos zu arbeiten.
Gibt es eine andere Möglichkeit, die gewünschten Ergebnisse zu erhalten? Oder mache ich hier etwas falsch?
Als Referenz war die Idee, die ich insgesamt hatte:
DECLARE @columnname VARCHAR(50)
DECLARE @tot_Count NUMERIC(10), @Count NUMERIC(10)
set @tot_Count = 0
DECLARE MyCursor CURSOR FOR
SELECT name
from sys.columns
where object_id = (select object_id from sys.objects where name = 'FILENAME')
open MyCursor
FETCH NEXT FROM MyCursor INTO @columnname
WHILE @@FETCH_STATUS = 0
BEGIN
declare @SQL varchar(max)
set @SQL =''
set @Count = 0
set @SQL = @SQL + 'set @teller = (select count(*) from FILENAME where ' + @columnname + ' like ''%e%'')'
print (@SQL)
exec (@SQL)
set @tot_Count = @tot_Count + @Count
FETCH NEXT FROM MyCursor into @name
END
CLOSE MyCursor
DEALLOCATE MyCursor
print (@tot_teller)
Markieren Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –
Cursor ist nicht gut für Tuning-Aktivität, werde ich eine Abfrage für Ihre dynamische Anforderung – LONG