Как получить одну строку в наборе результатов из 2 строк в таблице / файле без использования курсоров в Sybase / Perl - PullRequest
0 голосов
/ 12 августа 2010

У меня есть таблица T со столбцами A, B, C & D, как показано ниже:

A  B  C   D  
===============
A1 B1 USD LIBOR  
A1 B2 JPY FIXED  
A2 B3 USD LIBOR  
A2 B4 EUR FIXED  
A3 B5 JPY FIXED  
A3 B6 USD LIBOR   
  1. Таблица всегда имеет 2 строки на «A», с разными значениями «B ".

  2. " B "является уникальным

  3. " A "- varchar (10)," B "- varchar (8),"C" - varchar (3), "D" - varchar (5)

  4. Правила проверки ограничивают столбцы следующими форматами - "A", "B '," D "- Буквенно-цифровое "C" - Буквенное

Мне нужно извлечь приведенные ниже результаты из таблицы -

Набор результатов 1:

A1 USD LIBOR JPY FIXED  
A2 USD LIBOR EUR FIXED  
A3 JPY FIXED USD LIBOR  

Результирующий набор 2:

USD LIBOR JPY FIXED  
USD IBOR  EUR FIXED

Я хочу избегать использования курсоров, если нет другого решения.

Можно ли извлечь эту таблицу вфайл и использовать Perl для получения результата?

Пожалуйста, помогите ...

1 Ответ

3 голосов
/ 12 августа 2010

Это можно сделать с помощью временных таблиц и нескольких обновлений, но я не думаю, что это будет очень хорошо в вашей таблице с миллионами строк.

Если ваши данные всегда имеют 2 строки на «A», с разными значениями «B» и имеют предсказуемые размеры (ширину столбцов) или формат (так что вы можете использовать специальные разделители), тогда что-то подобное может работать

SELECT A, MIN(B), MAX(B), right( MIN(B + C), 5), right( MIN(B + D), 5), right( MAX(B + C), 5), right(MAX(B + D), 5) FROM my_table GROUP BY A

...