当前位置: 首页 > 知识库问答 >
问题:

是否使用空条件的默认结果选择?

唐茂实
2023-03-14
Bukrs | Werks | Btrtl | Persg | Persk | value
1000   1000     1001     1      20      1,20
1000                                    1,10
SELECT
FROM dbtab
INTO lv_value
WHERE bukrs = bukrs
    AND (
        werks = werks
        AND btrtl = btrtl
        AND persg = persg
        AND persk = persk
        )

因此,对于具有精确条件条件匹配的查询,value必须是1,20,这是正确的。

但对于另一个不完全匹配的条件,例如bukrs=1000werks=1002btrtl=1003persg=2persk=27,它必须是1,10。

所以不适合全键的所有内容都应该回退到值为1,10的默认行。例如:

Bukrs = 1000
Werks = 1000 
Btrtl = 1001
Persg = 1
Persk = 20
Bukrs = 1000
Werks = 1004
Btrtl = 1002
Persg = 1
Persk = 27

对安得烈来说,应该选1,20;对彼得来说,应该选1,10。

共有1个答案

鲍驰
2023-03-14

试试看:

DATA: Andrew TYPE dbtab.

Andrew-bukrs = '1000'.
Andrew-werks = '1000'.
Andrew-btrtl = '1001'.
Andrew-persg = '1'.
Andrew-persk = '20'.

SELECT SINGLE value INTO @DATA(Andy) 
  FROM dbtab WHERE werks = ANY ( SELECT CASE WHEN bukrs = @Andrew-bukrs 
                                              AND werks = @Andrew-werks 
                                              AND btrtl = @Andrew-btrtl
                                              AND persg = @Andrew-persg 
                                              AND persk = @Andrew-persk
                                        THEN werks 
                                        ELSE '9999' 
                                 END AS werks FROM dbtab 
                               ).

WRITE / Andy-value.

这个片段给出了1.20,对于只有BUKRS的人的相同查询给出了1.10。

DATA: Peter TYPE dbtab.

Peter-bukrs = '1000'.

SELECT ....

说明:这里我们通过子查询来模拟ABAP SQL的XOR运算符。我们的子查询总是返回两个值:只有dbtab表中的一个真实行,另一个始终是伪9999。这样,外部查询将始终由工厂返回单个值,无论是真实值还是虚拟值。

 类似资料:
  • 问题内容: 使用jQuery,如何检查选择菜单中是否有选项,如果没有,则按选择分配选项之一。 (选择是通过我刚刚继承的应用程序中的PHP函数迷宫生成的,因此当我设法解决这些问题时,这是一个快速解决方案:) 问题答案: 虽然我不确定您到底想完成什么,但是这段代码对我有用。

  • 问题内容: 如果我执行,将以什么顺序显示记录?它会采用第一列还是通过某种元数据对其进行排序? 我正在使用Oracle数据库。 问题答案: 有 NO 默认的“排序”命令。关系表 中的 行 未排序 。 获取特定订单的唯一(真正的:唯一)方法是使用 运行无时您看到的任何顺序都是 纯重合的, 并且可以在下一次执行时更改。 订单可能由于多种原因而发生变化: 其他会话运行相同的语句 表格已更新 执行计划改变

  • 带hibernate的JSF应用程序 有没有一种方法可以使用联接来过滤条件列表返回的结果<我有两张桌子。订单和顾客。 我需要返回丢失电子邮件地址的客户的所有订单,以及所有order.billingCustomeId=null和CustomeId=nullorder.shipping订单。 客户可以在或上进行匹配。 我将使用的SQL Hibernate标准 这将返回billing/shipping

  • 问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2

  • 问题内容: 我正在尝试使用数组映射进一步过滤对象,以准备将其发送到服务器进行保存。我可以过滤为1个键值,这很不错,但是我想更进一步,将其与布尔值内部进行比较。 所以,现在这就是我所拥有的- 这对于拉出id很有用,但是如果它们的选定值== false,我不想将它们压入这个新数组中,因此我将一个条件作为进一步过滤条件。这有点奏效,我得到了一个id数组,但是具有.selected == false的id

  • 我有一个卡片列表组件,它应该显示卡片组件或卡片编辑组件的元素,具体取决于 上的卡片组件是真还是假。 卡片列表组件的模板如下所示: 我想将 ngIf 条件绑定到 wasEditClicked 布尔值。 我的卡组件(与上面显示的卡列表组件不同)如下所示: