我有一个存储品牌名称的db2表。在每一行中,我们都有一个供应商ID和一个国家。所以我可以用它来过滤出品牌。 现在,这些行还包含一个客户ID和一个组。 客户要么被填充(组为NULL),要么组被填充(客户组为NULL),要么都是空。
我想做的是:获得与该特定供应商和国家/地区匹配的所有行,但在客户和组上使用特殊的过滤器。 如果我在两个字段中都只有NULL行,则返回所有这些行。 如果某些行指定了组,则仅返回该组的行(而忽略具有NULL组的行) 但是,如果某些行指定了客户,则仅返回指定客户的行,而忽略其他行(具有组的行或具有NULL NULL的行)
在SQL中,特别是在DB2中是否可行,还是在处理期间需要获取所有行并进行过滤? (在这种情况下为PHP)
由于你们希望我展示一些代码,因此经过一些研究(以前从未使用过“ WITH”),这就是我的想法
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=e7a54ff6eec8ed4be2594644ba3224bd
编辑:终于让它自己工作了,如果这不是最好的方法,那就不要了
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=ce7c99d8a37e3dad90900440127730e4
编辑2:我使用CASE将3个子查询合并为1,我认为这更好,但不确定。
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=b581532553b5619d9cdc388d54619836