点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨团队
我有三个表,所有表中都有part_serial_no列。
1)GRN(收货通知)
2)Delivery_Note
3)发票
当经销商收到part_number时,我们将GRN设为相同。
例如:对于零件号:PA100和经销商:AMAD12,我们在GRN表中为part_serial_no列提供值'AMA100X01'
下一次当同一经销商:AMAD12收到PA100时,序列号将为" AMA100X02",即每个part_no都具有相同经销商的唯一序列号。
现在我有一个条件,在创建序列号为'AMA100X01'的GRN之前,我希望使用SQL查询检查此序列号是否在交货单和发票表中,其中输出应为布尔值TRUE
1)如果交货单和发票中不存在序列号。
2)如果交货单和发票中存在序列号,但经销商不同。
输出值为False
1)如果同一经销商的交货单和发票表中存在序列号。
我已经在使用以下查询
选择 案件 什么时候 存在(从TOP 1 * FROM GRN WHERE PART_SERIAL_NO ='AMA100X01') 然后"正确" 否则为"假" 结束 AS GRN_EXIST, 案件 什么时候 存在(选择前1 *从DELIVERY_NOTE PART_SERIAL_NO ='AMA100X01') 然后"正确" 否则为"假" 结束 如DNOTE_EXIST, 案件 什么时候 存在(从TOP 1 * *在发票PART_SERIAL_NO ='AMA100X01'的情况下) 然后"正确" 否则为"假" 结束 AS INVOICE_EXIST 从EQS_GRN,其中USER_ID ='MR200'和PART_SERIAL_NO ='AMA100X01'
并获得如下输出。
但是实际上我想以这样一种方式来构建查询:我根据上面定义的条件得到一个单列和一行,其布尔值为True或False。
致谢
Govardan
。
(5.3 kB)
不确定我是否完全理解了您的逻辑,所以我只是按您提供的代码进行操作。
这样的事情可能会发生:
当且仅当满足所有三个EXISTS条件时,公用表表达式" part_serial_exists"才返回TRUE,并返回USER_ID和PART_SERIAL_NO的组合(希望是唯一键)。
主要 查询,然后从EQS_GRN表中进行选择,并针对CTE进行LEFT OUTER JOIN,如果未找到匹配项,则将FALSE放在FOUND_ALL_ENTRIES列中。
BTW:无需在EXISTS中乱码 子句之类的东西,如TOP 1 ... HANA查询优化器了解您想对EXISTS进行的操作。 甚至在这里选择哪几列都没有关系-所有考虑的就是是否有匹配的记录。
一周热门 更多>