多部分标识符不能绑定sql where子句

时间:2017-12-07 06:15:16

标签: sql sql-server ssms where identifier

我正在尝试使用下面的代码将两个表相乘以获得新的计算列。我正在使用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"无法绑定错误。

请帮忙!

1 个答案:

答案 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连接的另一个原因。始终尽可能使用显式连接。