【发布时间】: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 <> @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