Sql 使用左联接进行分组

Sql 使用左联接进行分组,sql,db2,Sql,Db2,我无法在查询中创建GROUPBY子句。 我正在从DB2服务器提取数据 select lqbin# as Location, lqpart as Part#, lqlot# as Batch, lqqtyh as Qty, lqunit as UOM from binfxp left join binb on lqbin# = bm4binn and lqpart = bm4part where lqplnt = 'GC' 我试图找到在多个位置的零件,我得到了多个结果,因为有不同批号和

我无法在查询中创建GROUPBY子句。 我正在从DB2服务器提取数据

select 

lqbin# as Location,
lqpart as Part#,
lqlot# as Batch,
lqqtyh as Qty,
lqunit as UOM

from binfxp

left join binb on lqbin# = bm4binn and lqpart = bm4part

where lqplnt = 'GC'
我试图找到在多个位置的零件,我得到了多个结果,因为有不同批号和不同QTY的零件

我正在尝试按位置和零件号进行分组,如果我必须省略批次、数量和计量单位,则可以。 通过这种方式,我可以找到位于多个位置的零件号,以便合并它们

我附上了一张我的一个零件号的结果图片

我想看看


很难猜测您希望在输出中看到什么,因为除了11X3 bn70之外,您没有使用过其他部件。检查下面的查询,如果没有按预期工作,请扩展示例数据,并相应地输出数据

select 
      lqbin# as Location,
      lqpart as Part
from binfxp
left join binb on lqbin# = bm4binn and lqpart = bm4part
where lqplnt = 'GC'
group by lqpart, lqbin# 

我不确定我是否明白你的意思,但是一个普通的小组应该提供所要求的结果——像这样

select 

lqbin# as Location,
lqpart as Part#,
count(*)

from binfxp
left join binb on lqbin# = bm4binn and lqpart = bm4part
where lqplnt = 'GC'
GROUP BY Location, Part#
使用count*可以获得另外的发生次数

我试图找到位于多个位置的零件

这让我想到这样一个查询:

select lqpart, min(lqbin#), max(lqbin#)
from binfxp join
     binb
     on lqbin# = bm4binn and lqpart = bm4part
where lqplnt = 'GC'
group by lqpart
having min(lqbin#) <> max(lqbin#) ;

左连接不是必需的。实际上,连接不是必需的,因为您有两个列,并且两个表中都有一个列。如果您指定了哪些列在哪些表中,则查询可以进一步简化。

请使用表名或别名限定您的列,以便我们可以判断哪些列属于哪个表。或者更好的是,向我们展示表格中的样本数据。