下面的代码应该是外连接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 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;
为什么我需要将表声明为标量变量??
答案 0 :(得分:1)
在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
。