所以我有一个表,它有一个ship#&ref#的复合主键。每艘船有两个参考代码,即bm和po。bm字段是必需的,但po字段只有在用户实际输入某些内容时才会填充。因此,一个基本的选择将显示如下内容:
SHIP# REF# VALUE
000002 BM 20001836
000002 PO 020
000003 BM 20001834
000003 PO 8-694
000004 BM 20001835
现在,您会注意到000004号货物只有bm,没有po。
我想用采购订单的值显示所有发货。因此,如果po值是空的或者不存在,比如案例'000004',它应该简单地放'-'。因为bm是必需的,所以您必须获取bm存在的所有记录,但显示po字段的值。
所以,输出应该是:
SHIP# REF# VALUE
000002 PO 020
000003 PO 8-694
000004 PO -
如果你需要更多的澄清,请告诉我。谢谢。
2条答案
按热度按时间svgewumm1#
外部连接本身也可以完成这项工作。例如:
结果:
参见db<>fiddle上的运行示例。
编辑-仅查找没有采购订单的bms。
您可以使用相同的查询并添加额外的 predicate
and b.ship is null
在它里面,比如:结果:
参见db<>fiddle上的运行示例。
chhqkbe12#
可以使用聚合:
这将返回
value
作为NULL
--看起来是个不错的选择。如果你真的想'-'
,然后使用COALESCE()
: