查找分配给多个主要代码的物料清单的查询将是什么。
这里是样本数据
CREATE TABLE #MaterialMainCodetemp (
MaterialCode VARCHAR(100),
Maincode varchar(100)
);
Insert into #MaterialMainCodetemp Values('Material1','Main1')
Insert into #MaterialMainCodetemp Values('Material5','Main1')
Insert into #MaterialMainCodetemp Values('Material2','Main1')
Insert into #MaterialMainCodetemp Values('Material3','Main1')
Insert into #MaterialMainCodetemp Values('Material4','Main1')
Insert into #MaterialMainCodetemp Values('Material1','Main2')
Insert into #MaterialMainCodetemp Values('Material6','Main2')
Insert into #MaterialMainCodetemp Values('Material7','Main2')
Insert into #MaterialMainCodetemp Values('Material8','Main3')
Insert into #MaterialMainCodetemp Values('Material4','Main4')
Select M.MaterialCode,Count(*) from #MaterialMainCodetemp M
GROUP By M.MaterialCode
Having Count(*) > 1
上面的查询返回此值,但是我应该只取回Material1,因为只有该材料被分配了两个不同的MainCode
MaterialCode (No column name)
Material4 2
Material1 2
什么样的查询将只返回Material1?
我认为您的示例数据已关闭。实际上,为Material4分配了两个不同的主要代码。将您的最后一个插入语句更改为:
Insert into #MaterialMainCodetemp Values('Material4','Main1')
或将其完全丢弃。
但是,即使您更改了查询,查询仍会为您提供该结果。因此,请使用count(distinct maincode)
:
Select M.MaterialCode,Count(distinct maincode) from #MaterialMainCodetemp M
GROUP By M.MaterialCode
Having Count(distinct maincode) > 1