SQL从视图中将多组列拆分为行

时间:2019-01-30 18:39:48

标签: sql sybase sybase-iq

我正在使用旧版视图,该视图的键返回多个数据子集,我希望这些数据子集可以作为单独的行。返回的示例:

|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个子集)。除此之外,我真的不知道如何进行。如有必要,我想我可能必须将此视图包装在proc中并走那条路线。

1 个答案:

答案 0 :(得分:0)

您可以使用UNNEST:

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

**更新**

对不起,我没有注意到您正在使用sybase。 我不知道sybase是否支持unnest,但我将保留答案,看是否有人可以确认sybase支持。建议的查询可在Postgresql上使用。