繁体   English   中英

SQL Msg 209,级别16,状态1,行498模糊列名'SupplyCode'

[英]SQL Msg 209, Level 16, State 1, Line 498 Ambiguous column name 'SupplyCode'

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

消息209,级别16,状态1,行498模糊的列名称“ SupplyCode”。

- H。 选择从未在工作中使用过的耗材的供应代码和描述。(2个标记)

select SupplyCode,Description, count(*) from JobSupply

inner join Supply
on Supply.SupplyCode = JobSupply.SupplyCode

group by Supply.SupplyCode

消息8120,级别16,状态1,行498在选择列表中的列“ Supply.Description”无效,因为它既不包含在聚合函数中也不包含在GROUP BY子句中。

这是我由Orignallay完成的操作,从Supply中选择Supply.SupplyCode,Description,count(jobNumber)

在Supply.SupplyCode上内部加入JobSupply = JobSupply.SupplyCode

按Supply.SupplyCode分组

Count(JobNumber)= 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列, 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM