如何在选择时将交替的空列合并到一个结果字段中

2020-08-25 12:57发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我有一个具有以下结构/示例内容的数据库表

 ID date_released date_imported
 001 2020-01-01
 002 2020-01-02
 003 2020-01-02
 ...
 

我想(理想地)基于一些where子句选择多行,并将它们全部放入具有以下结构的结果内部表中

身份证日期
 001 2020-01-01
 002 2020-01-02
 003 2020-01-02 

是否可以(仅)使用ABAP中的select(打开SQL)语句?

我不希望选择将date_released和date_import放入单独的变量中,然后再进行循环和连接,因为显然该示例已简化,并且实际使用的数据库表比该示例中的宽得多。

旁注:作为一个好公民,我希望在可能进行S/4 HANA转换后将尽可能多的工作下推到数据库中。 目前,我们在使用NW 7.50 SP11的AnyDB上

非常感谢和欢呼

詹斯

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我有一个具有以下结构/示例内容的数据库表

 ID date_released date_imported
 001 2020-01-01
 002 2020-01-02
 003 2020-01-02
 ...
 

我想(理想地)基于一些where子句选择多行,并将它们全部放入具有以下结构的结果内部表中

身份证日期
 001 2020-01-01
 002 2020-01-02
 003 2020-01-02 

是否可以(仅)使用ABAP中的select(打开SQL)语句?

我不希望选择将date_released和date_import放入单独的变量中,然后再进行循环和连接,因为显然该示例已简化,并且实际使用的数据库表比该示例中的宽得多。

旁注:作为一个好公民,我希望在可能进行S/4 HANA转换后将尽可能多的工作下推到数据库中。 目前,我们在使用NW 7.50 SP11的AnyDB上

非常感谢和欢呼

詹斯

付费偷看设置
发送
13条回答
小c菟菟
1楼 · 2020-08-25 13:30.采纳回答

不允许使用"何时初始化",但直接测试该值怎么办:

 SELECT
     ID,
     案例date_released为" 00000000",然后date_imported为ELSE date_released为END AS
   从dbtab
   ... 

它应该从7.40 SP 08开始工作。

灬番茄
2楼-- · 2020-08-25 13:21

我认为,鉴于表中的更新要求具有非空值以及从7.40开始的ABAP Stack版本,我认为这会 成为我的"首选"解决方案。 Sathya Gunasekaran 没有冒犯,您的解决方案将非常适合最初的(严重不完整)要求。

但是,如果还有比将初始值指定为文字或使用帮助程序宿主变量更优雅的解决方案,请让它们继续:-)

clever101
3楼-- · 2020-08-25 13:06

Igor和Sathya的解决方案都不适合 对于初始值-当...为空时,COALESCE是一种奇特的情况。 我承认在最初的帖子中并不清楚。 已经调整了我的第一篇文章。

感谢您提供的到目前为止的信息。 还有其他想法吗? 情况……当不允许使用INITIAL时:-//我是否需要恢复到(初始)主机变量,还是有一个更优雅的解决方案?

干杯

Jens

compass1988
4楼-- · 2020-08-25 13:04

感谢Guus,这可以工作。 但是我有点犹豫,因为两次访问数据库并需要加载通常在内存中用于比较/联合的两倍的数据。

如果只有两个字段,情况将变得更加糟糕。 可能是交替的初始但很多(在我的真实示例中,我有3对交替的空字段)。

欢呼

Jens

绿领巾童鞋
5楼-- · 2020-08-25 13:05

我怀疑它是否真的会受到双重打击,因为它仍然是一条SQL语句。

hengyuye
6楼-- · 2020-08-25 13:04

足够好:-)

Bunny_CDM
7楼-- · 2020-08-25 13:25

在循环中使用If Else。

首先将所有3个字段都选择到一个内部表中,然后循环内部表并检查date_released ='00000000',如果为true,则将date_imported字段和ID视为另一个内部表并显示。

一周热门 更多>