【问题标题】:sql query and ABAP keyword 'WITH'sql查询和ABAP关键字\'WITH\'
【发布时间】:2022-10-24 18:07:28
【问题描述】:

在 SQL 中,我可以执行以下操作:

Declare @lv_count
Set @lv_count = ( Select Count(*) From BKPF where)
If @lv_count > 0
Begin
    sql_query1
Else
    sql_query2
End

ABAP:

WITH +ttassignment AS (
     SELECT financialinstrumentassignment
     FROM +ttRANL_FLOW_S
     WHERE financialinstrumentassignment <> @lv_empty_char
     GROUP BY financialinstrumentassignment )

我怎样才能做到这一点?

+ttresult AS (
If Count(+ttassignment) > 0
    Select * from +ttquery1
Else
    Select * from +ttquery2
EndIf )

【问题讨论】:

  • 但是为什么你要在这里使用with 并在if 语句中执行count,而不是查询本身?这些查询是不同的。只需使用select count( distinct financialinstrumentassignment ) FROM +ttRANL_FLOW_S WHERE financialinstrumentassignment &lt;&gt; @lv_empty_char into @count_variable
  • 你是在纯HANA上做这个吗?还是在HANA上的ABAP上?是否允许 CDS?
  • @Suncatcher,HANA 和 CDS 上的 ABAP 是允许的。
  • @astentx,据我所知,cte 是一种新的 abap 技术,它可以提供更高的性能并且只对数据库使用一次点击。 https://archer4sap.com/sap-abap-7-51_v1/cte-common-table-expressions 我的想法是尽可能多地使用 cte。 .对我来说,cte 看起来像 sql 中的存储过程,然后选择 endselect/loop/movie 通信对我来说更清楚,并且性能增加。 .我试图了解 cte 的限制。
  • 您知道可以使用ABAP-Managed Database Procedures 将SQLScript 嵌入ABAP 中吗?

标签: common-table-expression abap hana


【解决方案1】:

...您可以使用 ABAP-Managed Database Procedures 在 ABAP 中嵌入 SQLScript

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2011-02-13
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多