Sql 使用左联接进行分组
我无法在查询中创建GROUPBY子句。 我正在从DB2服务器提取数据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' 我试图找到在多个位置的零件,我得到了多个结果,因为有不同批号和
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#) ;
左连接不是必需的。实际上,连接不是必需的,因为您有两个列,并且两个表中都有一个列。如果您指定了哪些列在哪些表中,则查询可以进一步简化。请使用表名或别名限定您的列,以便我们可以判断哪些列属于哪个表。或者更好的是,向我们展示表格中的样本数据。