Sql 必须声明标量变量"@赫拉瓦“;必须声明标量变量"@“瓦哈”;
下面的代码应该是外部联接2声明的表,但我一直得到上面的错误Sql 必须声明标量变量"@赫拉瓦“;必须声明标量变量"@“瓦哈”;,sql,sql-server,Sql,Sql Server,下面的代码应该是外部联接2声明的表,但我一直得到上面的错误 DECLARE @Hlava table ([Datum/čas] datetime, [Filler L2 Hlava] int) DECLARE @Vaha table ([Datum/čas] datetime, [Filler L2 weight] int) insert into @Hlava ([Datum/čas], [Filler L2 Hlava]) select [DateTime],Value from
DECLARE @Hlava table
([Datum/čas] datetime, [Filler L2 Hlava] int)
DECLARE @Vaha table
([Datum/čas] datetime, [Filler L2 weight] int)
insert into @Hlava ([Datum/čas], [Filler L2 Hlava]) select [DateTime],Value
from INSQL_LINK.Runtime.dbo.AnalogHistory
where tagname = 'Filler_L2_hlava' order by datetime desc
insert into @Vaha ([Datum/čas], [Filler L2 weight]) select [DateTime],Value
from INSQL_LINK.Runtime.dbo.AnalogHistory
where tagname = 'Filler_L2_weight' order by datetime desc
SELECT [Datum/čas],[Filler L2 Hlava]
FROM @Hlava
FULL OUTER JOIN @Vaha ON @Hlava.[Datum/čas] = @Vaha.[Datum/čas];
SELECT [Datum/čas],[Filler L2 Hlava]
FROM @Hlava
Union All
SELECT [Datum/čas],[Filler L2 weight]
FROM @Vaha;
为什么需要将表声明为标量变量???在SQL Server中,表别名不能以
@
开头。因此,在这样的查询中,您的限定列名没有意义:
SELECT [Datum/čas],[Filler L2 Hlava]
FROM @Hlava FULL OUTER JOIN
@Vaha
ON @Hlava.[Datum/čas] = @Vaha.[Datum/čas];
所以,给他们取个别名:
SELECT [Datum/čas], [Filler L2 Hlava]
FROM @Hlava h FULL OUTER JOIN
@Vaha v
ON h.[Datum/čas] = v.[Datum/čas];
我还建议您简化列名,这样就不必转义。例如,
Datumčas
而不是Datum/čas
您是同时执行所有语句,还是单独执行?标记正在使用的dbms。该代码是特定于产品的。请提供有关您使用的数据库(SQl server、MS SQl等)等问题的更多详细信息。此外,最好提供样本输入和输出,以便人们能够轻松地进行调查