IBM iNavigator (или универсальный / независимый SQL):
Я работаю с системой IBM, которая сохраняет комментарии в виде 25-символьных текстовых блоков. Я пытаюсь собрать первые три сегмента текстовых блоков для каждого сохраненного комментария. Таблица комментариев имеет номер заголовка комментария (COMM_NO), порядковый номер строки (LINE_SQ) и фактический текст (TXT). Я смотрю на три примера комментариев. В комментарии № 1140 говорится: «Возврат продукта клиента после истечения срока гарантии. Требуется цитата». Комментарий № 1408 состоит из двух сегментов: «Попытка позвонить клиенту после обновления». Комментарий № 2884 является коротким и говорит только «RMA # 467». Данные таблицы выглядят так [РЕДАКТИРОВАТЬ: исправленный оператор вставки]:
CREATE TABLE mycomments
([COMM_NO] int, [LINE_SQ] int, [TXT] varchar(25))
;
INSERT INTO mycomments
([COMM_NO], [LINE_SQ], [TXT])
VALUES
(1140, 1, 'Customer product return a'),
(1140, 2, 'fter warranty expired. Ne'),
(1140, 3, 'eds quote issued.'),
(1408, 1, 'Tried to call customer af'),
(1408, 2, 'ter update.'),
(2884, 1, 'RMA #467');
И что мне нужно, это:
COMM_NO TXT1 TXT2 TXT3
------- ------------------------- ------------------------- -------------------------
1140 Customer product return a fter warranty expired. Ne eds quote issued.
1408 Tried to call customer af ter update. {null}
2884 RMA #467 {null} {null}
У меня есть несколько попыток по левому присоединению к таблице дважды с использованием псевдонимов. Я еще не совсем там, но это моя ближайшая попытка:
SELECT
comm1.COMM_NO
, comm1.TXT as TXT1
, comm2.TXT as TXT2
, comm3.TXT as TXT3
FROM mycomments comm1
LEFT JOIN mycomments AS comm2 ON comm2.COMM_NO = comm1.COMM_NO AND comm1.LINE_SQ=1 AND comm2.LINE_SQ=2
LEFT JOIN mycomments AS comm3 ON comm3.COMM_NO = comm1.COMM_NO AND comm1.LINE_SQ=1 AND comm2.LINE_SQ=2 AND comm3.LINE_SQ=3
На самом деле, мне бы очень хотелось объединить три сегмента вместе, даже если TXT3 или TXT2 / TXT3, приведенные выше, равны нулю:
COMM_NO BIGTXT1
------- ---------------------------------------------------------------------------
1140 Customer product return after warranty expired. Needs quote issued.
1408 Tried to call customer after update.
2884 RMA #467
Любая помощь приветствуется. Спасибо!