无法绑定多部分标识符之间的跳动和不明确的列名



我不断收到两个错误消息,具体取决于我尝试修复它们的方法。

首先是我的代码:

SELECT 
    ConsltNum AS 'Consultant Number', 
    COUNT(ConsltNum) AS 'Client Count', 
    AVG(Balance) AS 'Average'
FROM
    Client Cl
INNER JOIN 
    Consultant Cn ON Cl.ConsltNum = Cn.ConsltNum
GROUP BY 
    Cn.LastName

运行它,我得到了。

msg 209,16级,状态1,第3行
模棱两可的列名称" Consltnum"。

msg 209,16级,状态1,第3行
模棱两可的列名称" Consltnum"。

现在,我知道这是模棱两可的,因为ConsltNum都存在于我包含的两个表中。通常,我会尝试通过将代码更改为此来拨入该数据库:

SELECT 
    Client.ConsltNum AS 'Consultant Number', 
    COUNT(Client.ConsltNum) AS 'Client Count', 
    AVG(Balance) AS 'Average'
FROM
    Client Cl
INNER JOIN 
    Consultant Cn ON Cl.ConsltNum = Cn.ConsltNum
GROUP BY 
    Cn.LastName

运行此操作后,我得到:

msg 4104,16级,状态1,第3行
多部分标识符" client.consltnum"不可约束。

msg 4104,16级,状态1,第3行
多部分标识符" client.consltnum"不可约束。

其他一些值得一提的事情:我尝试拨打dbo.Client.ConsltNum,并引发相同的错误。

只需使用正确的别名:

SELECT cl.ConsltNum AS Consultant_Number,
       COUNT(*) AS Client_Count, AVG(?.Balance) AS Average
FROM Client Cl INNER JOIN
     Consultant Cn
     ON Cl.ConsltNum = Cn.ConsltNum
GROUP BY cl.ConsltNum;

?用于balance来自的表的别名。

注意:

  • 您需要使用为列分配的表别名。
  • GROUP BY应匹配SELECT列。
  • 仅对字符串和日期常数使用单引号。提供不需要逃脱的列名称。
  • 您可能会很好地使用COUNT(*),因为您知道ConsltNum永远不会NULL

相关内容

最新更新