gpt4 book ai didi

where-clause - 如何在 SELECT 中包含多个条件?

转载 作者:行者123 更新时间:2023-12-01 09:34:33 24 4
gpt4 key购买 nike

我正在使用 5 个参数从数据库表中获取详细信息(ma​​ra、makt、marc、mard)。

 PARAMETERS :number TYPE matnr MATCHCODE OBJECT MAT1 ,
type TYPE MTART MATCHCODE OBJECT H_T134 ,
sector TYPE MBRSH MATCHCODE OBJECT H_T137 ,
group TYPE MATKL MATCHCODE OBJECT H_T023 ,
unit TYPE MEINS MATCHCODE OBJECT H_T006 .

首先,我尝试使用 select 查询从 MARA 表中获取数据。在检索特定记录时,我必须使用 WHERE 条件。但我对条件部分感到困惑。我们可以通过 INITIAL 条件检查哪个参数有值。

但是 2/3/4/5 参数有可能具有值。对于每种情况,我们都必须编写选择查询(如果这样做会导致性能问题),或者有什么方法可以在选择查询中使用动态条件部分?

最佳答案

你可以使用SELECT-OPTIONS:

TABLES MARA.  

SELECT-OPTIONS:
s_matnr FOR mara-matnr MATCHCODE OBJECT MAT1 ,
s_mtart FOR mara-MTART MATCHCODE OBJECT H_T134 ,
s_mbrsh FOR mara-MBRSH MATCHCODE OBJECT H_T137 ,
s_matkl FOR mara-MATKL MATCHCODE OBJECT H_T023 ,
s_meins FOR mara-MEINS MATCHCODE OBJECT H_T006 .

* [...]

SELECT * FROM MARA where
matnr in s_matnr and
mtart in s_mtart and
mbrsh in s_mbrsh and
matkl in s_matkl and
meins in s_meins.

当您这样做时,您的选择屏幕将允许数据有多个值和范围。

如果您需要像 parameter-命令这样的单个值,则必须为 SELECT-OPTION 设置附加选项:

  • NO INTERVALS 只允许单个值
  • NO-EXTENSION 只允许一个值。
  • OBLIGATORY 如果不允许空值(据我了解你的问题,你的情况正好相反,所以你不需要它)。

所以你的选择是:

SELECT-OPTIONS:
s_matnr FOR mara-matnr NO-EXTENSION NO INTERVALS,
s_mtart FOR mara-MTART NO-EXTENSION NO INTERVALS,
s_mbrsh FOR mara-MBRSH NO-EXTENSION NO INTERVALS,
s_matkl FOR mara-MATKL NO-EXTENSION NO INTERVALS,
s_meins FOR mara-MEINS NO-EXTENSION NO INTERVALS.

备注:

    如果您使用 SELECT-OPTIONS
  • MARA 必须定义为 TABLE
  • 您真的需要 MATCHCODE OBJECT 吗?通常,FOR 的使用已经定义了正确的匹配码对象(通过数据元素/域)。

免责声明:

  • 我还没有可用的 SAP 系统,因此代码可能包含语法错误。 - 我明天去看看。

关于where-clause - 如何在 SELECT 中包含多个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com