SQL Разбейте несколько групп столбцов на строки в представлении - PullRequest
0 голосов
/ 30 января 2019

Я работаю над унаследованным представлением, которое для ключа возвращает несколько подмножеств данных, которые я хотел бы в виде отдельных строк.Пример того, что возвращается:

|a  |b  |cStartQty |cUpdatedQty |dStartQty |dUpdatedQty |
|1  |2  |10        |20          |15        |20          |
|2  |4  |11        |18          |16        |21          |

Я хотел бы получить что-то вроде

|a  |b  |Account   |StartQty |UpdatedQty |
|1  |2  |cXX       |10       |20         |
|1  |2  |dXX       |15       |21         |
|2  |4  |cXX       |11       |18         |
|2  |4  |dXX       |16       |21         |

Сначала я подумал, что мог бы сделать это с помощью цепочки союзов, но это потребовало бымного избыточных запросов в представлении (есть приблизительно 15 подмножеств).Кроме того, я понятия не имею, как поступить.При необходимости я подумал, что мне, возможно, придется свернуть эту точку зрения в процедуре и пойти по этому пути.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете использовать UNNEST:

SELECT 
 a, 
 b, 
 UNNEST(ARRAY[cStartQty, dStartQty]) as StartQty, 
 UNNEST(ARRAY[cUpdateQty, dUpdateQty]) as UpdateQty
FROM mytable

** ОБНОВЛЕНИЕ **

Извините, я не заметил, что вы используете sybase.Я не знаю, поддерживает ли sybase unnest, но я оставлю ответ таким, каким он есть, чтобы узнать, может ли кто-нибудь подтвердить поддержку sybase.Предлагаемый запрос работает на Postgresql.

...