Кодер написал(а):
AlexSmВообще в таком случае следует использовать другой вариант count. Нужно брать count( distinct имя_поля). Но у вас вообще задача какая-то мутная. С помощью указанного вами запроса будет отбираться не кол-во рейсов у авиакомпании, а количество рейсов в расписании. Рейсы авиакомпании находятся в таблице SPFLI, в SFLIGHT - расписание рейсов.
Т.е. если бы мен было нужно узнать количество рейсов в каждой авиакомпании, запрос был бы такой
Code:
TYPES
: BEGIN OF tscarr
, carrid TYPE scarr-carrid
, cnt TYPE i
, END OF tscarr
, t_scarr TYPE TABLE OF tscarr
.
DATA
: gt_scarr TYPE t_scarr
.
START-OF-SELECTION. .
SELECT scarr~carrid COUNT( DISTINCT connid ) as cnt
INTO CORRESPONDING FIELDS OF table gt_scarr
FROM scarr
LEFT OUTER JOIN spfli
ON spfli~carrid = scarr~carrid
group by scarr~carrid.
правильно понимаю, что имели ввиду вот это:
TYPES
: BEGIN OF tscarr,
carrid TYPE scarr-carrid,
cnt TYPE i,
END OF tscarr.
DATA : t_scarr TYPE TABLE OF tscarr,
gt_scarr TYPE tscarr.
START-OF-SELECTION.
SELECT scarr~carrid COUNT( DISTINCT connid ) as cnt
INTO CORRESPONDING FIELDS OF table t_scarr
FROM scarr
LEFT OUTER JOIN spfli
ON spfli~carrid = scarr~carrid
group by scarr~carrid.
Loop at t_scarr into gt_scarr.
write : / gt_scarr-carrid , gt_scarr-cnt.
endloop.
В таком варианте все верно. Возможно я ошибся в бизнес описании задачи, но суть сводиться к тому, что нужно сделать выборку именно из scarr и sflight.
В sflight нет такой одной колонки , которая была однозначным ключом. Как в такой ситуации поступить ?