ABAP Keyword Documentation → ABAP - Reference → Processing External Data → ABAP Database Accesses → Open SQL → Open SQL - Read Accesses → SELECT → SELECT - result → SELECT - select_list → SELECT - col_spec → SELECT - sql_exp → Examples of SQL Expressions
SQL Expressions, Complex CASE
This example demonstrates complex case distinctions in SQL expressions.
Other versions:
7.31 | 7.40 | 7.54
Source Code
CONSTANTS: both_l TYPE c LENGTH 20 VALUE 'Both < 50',
both_gt TYPE c LENGTH 20 VALUE 'Both >= 50',
others TYPE c LENGTH 20 VALUE 'Others'.
DATA wa TYPE demo_expressions.
DELETE FROM demo_expressions.
DATA(rnd) = cl_abap_random_int=>create(
seed = CONV i( sy-uzeit ) min = 1 max = 100 ).
DO 10 TIMES.
wa-id = |{ sy-index - 1 }|.
wa-num1 = rnd->get_next( ).
wa-num2 = rnd->get_next( ).
INSERT demo_expressions FROM wa.
ENDDO.
SELECT num1, num2,
CASE WHEN num1 < 50 AND num2 < 50 THEN @both_l
WHEN num1 >= 50 AND num2 >= 50 THEN @both_gt
ELSE @others
END AS group
FROM demo_expressions
ORDER BY group
INTO TABLE @DATA(results).
cl_demo_output=>write( results ).
LOOP AT results ASSIGNING FIELD-SYMBOL(<wa>)
GROUP BY ( key = <wa>-group size = GROUP SIZE )
INTO DATA(group).
cl_demo_output=>write( group ).
ENDLOOP.
cl_demo_output=>display( ).
Description
In a list of columns specified after SELECT
,
CASE
is used to make a complex case distinction for the content of two columns. The result is a string taken from a
host variable. Using the alternative column
name defined after AS
, the result is assigned to the column with the same
name in an internal table declared inline, results
.
GROUP BY
is used to group this table by the results column.