我正在尝试使用下面的代码将两个表相乘以获得新的计算列。我正在使用SQL Server Express Edition和SQL Server Management Studio。
select
[Yield_unpiv].[SubPrecinct],
[Yield_unpiv].[LandUse],
[Yield_unpiv].[Yield] * [LU_Rules_Final].[AM_GenRateFinal] * [LU_Rules_Final].[AM_In_factor] / [LU_Rules_Final].[UnitValue] as AM_In
from
Yield_unpiv, LU_Rules_Final
where
[Yield_unpiv].[LandUse]=[LU_Rules_Final].[LandUse]
但是,我收到以下错误
多部分标识符" Yield_unpiv.LandUse"无法受约束。
Yield_unpiv
设置如下:
SubPrecinct | Yield | LandUse
P1 Unique #s LDResi
P1 MDResi
. .
. .
. .
P2 LDResi
P2 MDResi
. .
. .
. .
LU_Rules_Final设置如下:
LandUse | UnitValue | AM_GenRateFinal | AM_In_factor
LDResi 1 2.5 0.5
BulkyGoods 100 7 0.7
MDREsi 1 0.52 0.1
.
.
.
我不知道为什么我会得到这个多部分标识符" Yield_unpiv.LandUse"无法绑定错误。
请帮忙!
答案 0 :(得分:1)
我不知道您的错误的确切原因,但可能与两个表中出现列LandUse
有关。我推测重构它以使用显式连接可以解决问题:
SELECT
t1.[SubPrecinct],
t1.[LandUse],
t1.[Yield] * t2.[AM_GenRateFinal] * t2.[AM_In_factor] / t2.[UnitValue] AS AM_In
FROM Yield_unpiv t1
INNER JOIN LU_Rules_Final t2
OM t1.[LandUse] = t2.[LandUse];
如果这可以解决您的问题,那么这意味着不再使用过时的ANSI-92样式的SQL连接的另一个原因。始终尽可能使用显式连接。