无论我做什么,我似乎无法解决错误。
Msg 209,Level 16,State 1,Line 498 不明确的列名'SupplyCode'。
- 小时。选择从未在作业上使用过的耗材的供应代码和说明。(2分)
select SupplyCode,Description, count(*) from JobSupply
inner join Supply
on Supply.SupplyCode = JobSupply.SupplyCode
group by Supply.SupplyCode
Msg 8120,Level 16,State 1,Line 498 列'Supply.Description'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
这就是我所做的orignallay 从Supply
中选择Supply.SupplyCode,Description,count(jobNumber)内部联接JobSupply 在Supply.SupplyCode = JobSupply.SupplyCode
按Supply.SupplyCode分组
有Count(JobNumber)= 0
答案 0 :(得分:1)
您需要在所选列中限定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
答案 1 :(得分:1)
由于列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)