Select 来自子查询的字段
Select field from subquery
我们可以在 select 查询中使用子查询中的字段吗?喜欢
select sp~carrid, sp~connid,
carrname = ( select CARRNAME from scarr as sc )
into TABLE @data(it_flight)
FROM spfli as sp.
没有您建议的简单 ABAP SQL 语法,但有以下解决方法。
从 7.51 开始,您可以使用 Common Table Expressions:
WITH
+carrname_af AS (
SELECT carrname FROM scarr WHERE carrid = 'AF' ),
+carrname_lh AS (
SELECT carrname FROM scarr WHERE carrid = 'LH' )
SELECT sp~carrid, sp~connid, af~carrname AS carrname_af,
lh~carrname AS carrname_lh
FROM spfli AS sp
CROSS JOIN +carrname_af AS af
CROSS JOIN +carrname_lh AS lh
INTO TABLE @data(it_flight).
在 7.51 之前,你需要使用几个语句(这里我使用了一个仅在 7.50 中有效的简短语法(因为有两个主机表达式),但你可以很容易地适应早期版本的代码):
SELECT sp~carrid, sp~connid, @( VALUE s_carrname( ) ) AS carrname_af,
@( VALUE s_carrname( ) ) AS carrname_lh
FROM spfli AS sp
INTO TABLE @data(it_flight).
" Now initialize carrname_af and carrname_lh of IT_FLIGHT
SELECT SINGLE carrname FROM scarr INTO @data(carrname_af)
WHERE carrid = 'AF'.
SELECT SINGLE carrname FROM scarr INTO @data(carrname_lh)
WHERE carrid = 'LH'.
DATA ls_flight LIKE LINE OF it_flight.
ls_flight = VALUE #( carrname_af = carrname_af carrname_lh = carrname_lh ).
MODIFY it_flight FROM ls_flight TRANSPORTING carrname_af carrname_lh
WHERE carrid CP '*'.
我们可以在 select 查询中使用子查询中的字段吗?喜欢
select sp~carrid, sp~connid,
carrname = ( select CARRNAME from scarr as sc )
into TABLE @data(it_flight)
FROM spfli as sp.
没有您建议的简单 ABAP SQL 语法,但有以下解决方法。
从 7.51 开始,您可以使用 Common Table Expressions:
WITH
+carrname_af AS (
SELECT carrname FROM scarr WHERE carrid = 'AF' ),
+carrname_lh AS (
SELECT carrname FROM scarr WHERE carrid = 'LH' )
SELECT sp~carrid, sp~connid, af~carrname AS carrname_af,
lh~carrname AS carrname_lh
FROM spfli AS sp
CROSS JOIN +carrname_af AS af
CROSS JOIN +carrname_lh AS lh
INTO TABLE @data(it_flight).
在 7.51 之前,你需要使用几个语句(这里我使用了一个仅在 7.50 中有效的简短语法(因为有两个主机表达式),但你可以很容易地适应早期版本的代码):
SELECT sp~carrid, sp~connid, @( VALUE s_carrname( ) ) AS carrname_af,
@( VALUE s_carrname( ) ) AS carrname_lh
FROM spfli AS sp
INTO TABLE @data(it_flight).
" Now initialize carrname_af and carrname_lh of IT_FLIGHT
SELECT SINGLE carrname FROM scarr INTO @data(carrname_af)
WHERE carrid = 'AF'.
SELECT SINGLE carrname FROM scarr INTO @data(carrname_lh)
WHERE carrid = 'LH'.
DATA ls_flight LIKE LINE OF it_flight.
ls_flight = VALUE #( carrname_af = carrname_af carrname_lh = carrname_lh ).
MODIFY it_flight FROM ls_flight TRANSPORTING carrname_af carrname_lh
WHERE carrid CP '*'.