У меня следующий SQL:
EXEC SQL
DECLARE MY-CUR CURSOR WITH HOLD FOR
SELECT ,ME.MSGTYPECD
,ME.MSGSUBTYPECD
FROM T_MESSAGE ME
ORDER BY ME.MSGTYPECD ASC,
ME.MSGSUBTYPECD ASC
Набор результатов выглядит примерно так:
MsgType MsgSubType
300
300
515
515
515
535
535
535
598 515
598 515
598 515
Я хотел бы получить следующий результат:
MsgType MsgSubType
300
300
515
515
515
598 515
598 515
598 515
535
535
535
Существует также возможное решение для выполнения этой задачи с ORDER BY и CASE, но тогда мне нужно будет «кодировать» каждый MsgType, что немного раздражает.(900 MsgTypes) и если придет новый, мне нужно будет снова изменить запрос.
edit: // MsgType и MsgSubType определены как символ, и значение (если оно не заполнено) равно BLANK.
Определение выглядит так:
with T_MESSAGE (MsgTypeCD, MsgSubTypeCD) as (values
('300', ' ')
, ('300', ' ')
, ('515', ' ')
, ('515', ' ')
, ('515', ' ')
, ('535', ' ')
, ('535', ' ')
, ('535', ' ')
, ('598', '515')
, ('598', '515')
, ('598', '515')
)