Por favor, use o botão de código para tornar a codificação mais legível. Esta é a sua pergunta:
SELECT a~field1, a~field2, a~field3, b~field3
FROM ( SELECT field1, field2, field3 FROM table1 ) AS a
INNER JOIN ( SELECT field1, field2, field3 FROM table2 ) AS b
ON a~field1 = b~field1
AND a~field2 = b~field2
A declaração SQL acima já é uma mistura de ABAP SQL (ainda conhecido como Open SQL) e SQL nativo do banco de dados. Definitivamente não funcionará no ABAP (principalmente por causa do select de subconsultas) e duvido que funcionará no seu servidor SQL (por causa de '~' em vez de '.').
No entanto, com base no que você está tentando alcançar, o resultado é o 'mesmo' que o seguinte, que funcionará no ABAP SQL. (Dado que ambos estão escritos em SQL nativo adequado, o seguinte também terá melhor desempenho do que o anterior.)
SELECT a~field1, a~field2, a~field3, b~field3
FROM table1 AS a
INNER JOIN table2 AS b
ON a~field1 = b~field1
AND a~field2 = b~field2
INTO TABLE @DATA(itab).
Com ABAP SQL, é assim que você faria com 'Expressões de Tabela Comum' (cte) disponíveis desde o ABAP 75x:
(mas como mencionado anteriormente, o desempenho será pior do que a declaração ABAP acima,)
WITH
+a AS ( SELECT field1, field2, field3 FROM table1 ),
+b AS ( SELECT field1, field2, field3 FROM table2 )
SELECT +a~field1, +a~field2, +a~field3, +b~field3
FROM +a
INNER
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019