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

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:27

为什么不使用CONCAT? (符合您所提供的示例)

木偶小白
3楼-- · 2020-08-25 13:30

您好,

您可以使用嵌套的IFNULL()。

https://help.sap .com/viewer/7c78579ce9b14a669c1f3295b0d8ca16/Cloud/en-US/20e23edb75191014b906e3271722de36.html

此致

伊戈尔(Igor)

clever101
4楼-- · 2020-08-25 13:16

嗨,桑德拉(Sandra)/所有,很抱歉造成混乱。 我无法再编辑初始示例,因此我们再次进行。 该表(据我所知)包含初始值,而不是空值。 我需要合并的值是DATS(d)和TIMS(t)值。

但是,理想情况下,该解决方案应该适用于所有(大多数)数据类型,并且我不需要根据 源数据类型(至少可以是:-)

这是表格(简体)

 ID(NUMC3)date_released(DATS)date_imported(DATS)
 001 20200101 00000000
 002 00000000 20200102
 003 20200102 00000000
 ... 

这是想要的结果(内部表)

 ID(NUMC3)date(DATS)
 001 20200101
 002 20200102
 003 20200102
 ... 

有关Netweaver版本的一些信息。 最初(大约4天前),它应该只在具有NW 7.50 SP11的相当ERP EHP 8上运行。 现在,它也应该在带有NW 7.40 SP20的较旧的Solution Manager 7.20上运行。 因此,CONCAT Open SQL在该堆栈中似乎不存在。

无论哪种方式,CONCAT都会自动满足将" d"转换为" c"的需求,然后将此" c"输出输入到结果内部表中 字段"日期"具有" d"数据类型?

葫芦娃快救爷爷
5楼-- · 2020-08-25 13:15
DafaDDDa
6楼-- · 2020-08-25 13:23

日期数据类型为 DATS_IS_VALID 函数,我认为您可以在CASE WHEN语句中使用它,而不是使用初始(00000000将被视为无效)。 一般来说,我认为没有一种解决方案可以适用于所有数据类型。

空代码
7楼-- · 2020-08-25 13:30

您可以尝试使用UNION

从date_released不是初始的A中选择date_released作为日期

联盟

我认为,

从date导入不是初始的A中选择date_imported作为日期

一周热门 更多>