SQL 消息 209,级别 16,状态 1,第 498 行 不明确的列名'SupplyCode'



无论我做什么,我似乎都无法解决错误。

Msg 209,级别 16,状态 1,第 498 行 不明确的列名称"供应代码"。

-

-h. 选择从未在作业中使用的电源的供应代码和描述。(2 分)

select SupplyCode,Description, count(*) from JobSupply
inner join Supply
on Supply.SupplyCode = JobSupply.SupplyCode
group by Supply.SupplyCode

Msg 8120,级别 16,状态 1,第 498 行列 'Supply.Description' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

这就是我所做的从供应中选择供应。供应代码,描述,计数(作业编号)

内联 就业供应on Supply.SupplyCode = JobSupply.SupplyCode

按供应代码分组

计数(作业编号) = 0

您需要

在所选列中限定 SupplyCode,因为它无法消除与 Supply 中的 SupplyCode 和 JobSupply 中的 SupplyCode 的歧义。尝试:

select S.SupplyCode,Description, count(*) from JobSupply
inner join Supply S on S.SupplyCode = JobSupply.SupplyCode
group by S.SupplyCode

由于列SupplyCode存在于两个引用的表中,因此您必须在 select 语句中限定名称并指定应从哪个表中检索该名称。

您也可以考虑使用别名:

select s.SupplyCode, Description, count(*) 
from JobSupply js
join Supply s on s.SupplyCode = js.SupplyCode
group by s.SupplyCode, description

附带说明一下,您提供的查询可能无法回答您尝试解决的问题。(选择从未在作业中使用过的耗材的供应代码和描述

您可能希望使用左连接并过滤掉缺失的行,因为这些行应该是从未使用过的行。或者,您可以将相关子查询与exists谓词一起使用:

像这样:

select SupplyCode, Description 
from Supply s
where not exists (select 1 from jobsupply js where s.SupplyCode = js.SupplyCode)

最新更新