我不断收到两个错误消息,具体取决于我尝试修复它们的方法。
首先是我的代码:
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
。