查找分配给多个类别的材料

问题描述 投票:0回答:1

查找分配给多个主要代码的物料清单的查询将是什么。

这里是样本数据

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?

sql sql-server
1个回答
0
投票

我认为您的示例数据已关闭。实际上,为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
© www.soinside.com 2019 - 2024. All rights reserved.