繁体   English   中英

从子查询中选择字段

[英]Select field from subquery

我们可以在选择查询中使用子查询中的字段吗? 喜欢

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 中有效的简短语法(因为有两个 Host 表达式),但是您可以很容易地为早期版本调整代码):

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 '*'.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM