Ihre letzte Aussage zu dieser Änderung:
EXEC('SELECT * FROM ' + @tablename)
Dies ist, wie ich meine zu tun in einer gespeicherten Prozedur. Der erste Block deklariert die Variable und legt den Tabellennamen basierend auf dem aktuellen Jahr- und Monatsnamen fest, in diesem Fall TEST_2012OCTOBER. Ich überprüfe dann, ob es bereits in der DB existiert, und entferne es, wenn es funktioniert. Dann verwendet der nächste Block eine SELECT INTO-Anweisung, um die Tabelle zu erstellen und sie mit Datensätzen aus einer anderen Tabelle mit Parametern zu füllen.
--DECLARE TABLE NAME VARIABLE DYNAMICALLY
DECLARE @table_name varchar(max)
SET @table_name =
(SELECT 'TEST_'
+ DATENAME(YEAR,GETDATE())
+ UPPER(DATENAME(MONTH,GETDATE())))
--DROP THE TABLE IF IT ALREADY EXISTS
IF EXISTS(SELECT name
FROM sysobjects
WHERE name = @table_name AND xtype = 'U')
BEGIN
EXEC('drop table ' + @table_name)
END
--CREATES TABLE FROM DYNAMIC VARIABLE AND INSERTS ROWS FROM ANOTHER TABLE
EXEC('SELECT * INTO ' + @table_name + ' FROM dbo.MASTER WHERE STATUS_CD = ''A''')
QUOTENAME für die Sicherheit wichtig ist. Vielen Dank. –
Aber wie man Wert von solcher Frage zurückbringt? Z.B. 'COUNT (*)'? – Suncatcher