我无法在查询中创建group by子句。 我正在从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'
我试图找到位于多个位置的零件,我得到了多个结果,因为有些零件具有不同的批号和不同的数量。
我正在尝试按位置和零件号分组,如果我必须省略批次,数量和UOM,那很好。 这样,我可以找出多个位置的零件编号,以便对其进行合并。
我已经附上一张零件编号的结果图片。
我想看
答案 0 :(得分:0)
很难猜出您期望在输出中看到什么,因为除了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#
答案 1 :(得分:0)
我不确定我是否理解你的意思,但是常规的分组依据应该提供所要求的结果-像这样
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(*),您还将获得额外的出现次数。
答案 2 :(得分:0)
我正在尝试查找多个位置的零件
这使我想到了这样的查询:
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#) ;
不需要left join
。实际上,join
不是必需的,因为您有两列,两个表中都有一列。如果指定了哪些列位于哪些表中,则查询可以进一步简化。