Подсчитать количество вхождений роли среди пользователей?

В таблице, которую я использую, хранятся разные имена систем, соответствующих пользователей и их роли. Моя цель - использовать команды SELECT и COUNT вместе, чтобы получить такой вывод:

SysName | Role1 | Role2 | Role3
----------------------------------
sys1    | 10    | 5     | 25
sys2    | 0     | 70    | 12

Но похоже, что некоторые команды SQL или их структура не работают в коде ABAP.

Не могли бы вы сообщить мне, возможно ли что-то подобное и когда как?


person user7715132    schedule 29.08.2017    source источник
comment
ABAP чувствителен к пространству. Вы использовали пробел между COUNT и круглыми скобками?   -  person    schedule 29.08.2017
comment
Покажите нам структуру вашей таблицы   -  person Suncatcher    schedule 30.08.2017
comment
Думаю, это не синтаксическая ошибка. Столбцы: - имя системы - имя пользователя - тип роли.   -  person user7715132    schedule 31.08.2017


Ответы (3)


С помощью этой команды вы можете подсчитать все в таблице. Просто добавьте свои условия WHERE:

SELECT COUNT( * ) INTO integer FROM table [WHERE...].

Надеюсь, это то, что вы ищете.

person Marvin    schedule 04.09.2017

Ошибка возникла из-за отсутствия ключевого слова DISTINCT.

Правильный ответ должен быть примерно таким:

SELECT COUNT( DISTINCT col1 ) ...
person user7715132    schedule 23.03.2018

Выберите col1, COUNT (col2) INTO TABLE @tbl GROUP BY col1 не работает в abap, только Select col1, COUNT (DISTINCT col2) INTO TABLE @tbl GROUP BY col1. Я думаю, вам следует использовать Select + Loop в этом случае

person stack overflow user    schedule 06.09.2017
comment
Это неправда. SELECT COUNT отлично работает автономно. - person Suncatcher; 01.12.2017
comment
Извините за непонятный ответ. Я хочу сказать, что этот тип выбора не работает в abap. ВЫБЕРИТЕ col1, COUNT (col2) INTO TABLE @tbl GROUP BY col1. - person stack overflow user; 01.12.2017