2016-03-28 9 views
0

Kann jemand überprüfen, was mit diesen Codes falsch ist? Ich überprüfe bereits die anderen Fragen als Referenz, aber es funktioniert immer noch nicht.SQL Server: 2 Spalte in 1 Variable aus Variablentabelle setzen

enter image description here

declare @sourceTable varchar(500) 
declare @year varchar(22) 
declare @month varchar(3) 
declare @test varchar(12) 
declare @result varchar(8) 
declare @index int 

declare @string varchar(15) 
set @string = (SELECT DISTINCT TOP 1 REPLACE(dbo.fn_Parsename(WHOLEROW, '|', 0), CHAR(9), '') FROM #temp1) 
set @test = (select UPPER(convert(datetime,substring(@string,2,charindex('-',@string,1)-2)))) 
set @month =(left(@test,3)) 

set @year = (right(@test,5)) 

set @result = @month + @year 
-- select @result 

set @sourceTable = 'gen_048_'[email protected] 
select @sourceTable 

declare @string2 varchar(255) 
set @string2 = (select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM @sourceTable) 
select @string2 

Dies ist der Fehler

Muss die Tabelle Variable "@sourceTable" deklarieren.

+0

Was ist der Wert von '@test'? Und was bekommst du jetzt? Was erwartest du * stattdessen? –

+0

Zuerst erwähnen, was mit Ihrem aktuellen Code nicht stimmt –

+0

Need Dynamic Query –

Antwort

2

Sie dynamische Abfrage benötigen

SET @string2 = 'select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM ' 
       + Quotename(@sourceTable) 

EXEC (@string2) 
+0

Danke ~! das funktioniert gut. Mein einziges Problem ist jetzt, wie man die Zeilen dieser Referenznummer aktualisiert. –

0
set @string2 = (select convert(varchar(55),refdate)+'-'+convert(varchar(55),refcount) FROM @sourceTable) 
+0

Ich habe das schon gemacht, das ist die genaue Zeichenfolge von der anderen Frage, aber es funktioniert nicht. Dies ist der Fehler 'Muss die Tabellenvariable" @sourceTable "deklarieren." –

+0

offensichtlich aus dem Code, den Sie zur Verfügung gestellt, haben keine solche Variable: @sourceTable –

+0

es scheint "@sourceTable" ist varchar? also fügst du noch eine Zeile hinzu. ==> declare "@sourceTable" varchar (15) –

1

Sie nicht @sourcetable deklarieren, schreit der Fehler es laut und deutlich.

Fügen Sie diese am Anfang:

declare @sourcetable varchar(50) 

Auch ich glaube, dass Sie mit Dynamic SQL für diese Art von Anfragen und Variable verwenden müssen.

+0

Ja, ich erklärte die @ SourceTable, deshalb ist es irgendwie seltsam, dass ich immer noch diesen Fehler bekam. Ich habe nur vergessen, es dort zu platzieren. –