¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Realizar Join entre Tabelas SAP no ABAP Query: É possível como no SQL?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 62 Vistas
0
Cargando...

Posso fazer isso no ABAP Query, como costumava fazer no servidor SQL?

Notas: table1, table 2 são tabelas SAP.

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~field2 and a~field2 = b~field2

Obrigado

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Obrigado por responder,

Lamento, talvez meu exemplo não tenha sido claro o suficiente. Aqui está o que realmente quero alcançar e sim, no servidor SQL é utilizado '.' e não '~', mas de acordo com sua explicação, suponho que não é possível usar esse tipo de consulta.

SELECT x.field1, SUM(x.total1) as gt1, SUM(x.total2) as gt2 FROM 
( SELECT a.field1, a.field2, a.total1, b.total2
      FROM (SELECT field1, field2, SUM( field3 + field4 ) as Total1 FROM table1 GROUP BY field1, field2 ) AS a 
LEFT JOIN (SELECT field1, field2, SUM( field5 + field5 ) as Total2 FROM table2 GROUP BY field1, field2 ) AS b 
        ON a.field1 = b.field1
       AND a.field2 = b.field2 ) as x GROUP BY x.field1
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Por favor, use o botão de código para tornar a codificação mais legível. Esta é a sua pergunta:

" Posso fazer isso no ABAP Query, como quando usei no servidor SQL?

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
0
Cargando...

Em ABAP você se refere a isso? (Open SQL) - "ABAP Query" (chamado SAP Query por muito tempo) é algo diferente.

Se você ler os exemplos na documentação do ABAP, saberá sem precisar perguntar.

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(table_variable).
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Por favor, use o botão de código para tornar a codificação mais legível. Esta é a sua pergunta:

" Posso fazer isso no ABAP Query, como quando usei no SQL server?

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 é uma mistura de ABAP SQL (também conhecido como Open SQL) e SQL nativo do banco de dados. Definitivamente não funcionará no ABAP (principalmente devido à seleção de subconsultas) e duvido que funcione no seu servidor SQL (devido a '~' 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 apropriado, o seguinte também teria um desempenho melhor 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 'Common Table Expressions' (cte) disponíveis a partir do ABAP 75x:
(mas como já mencionado, o desempenho será pior que a declaração ABAP anterior,)

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
        
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?