在行号和分区依据之后将记录拆分为多列

时间:2019-03-18 03:04:16

标签: sql oracle

我希望我的结果显示在4列中。 这就是我进行编码的方式。

SELECT T.MT_CARD_TYP_ID,
       ROW_NUMBER() OVER (PARTITION BY T.APP_ID ORDER BY T.DT_CREATE) AS RN
FROM T_CS_FAC_CC T 
WHERE app_id = '8F9A97B0CB5349429C44F15830EDC18F';

下一步我该怎么做?有人可以帮我吗?

这就是我的结果

This is how my result look.

这就是我希望结果看起来像的样子。

This is how I want the result look like.

1 个答案:

答案 0 :(得分:1)

您可以尝试使用条件加重功能。

SELECT app_id,
       MAX(CASE WHEN RN = 1 THEN MT_CARD_TYP_ID END),
       MAX(CASE WHEN RN = 3 THEN MT_CARD_TYP_ID END),
       MAX(CASE WHEN RN = 2 THEN MT_CARD_TYP_ID END),
       MAX(CASE WHEN RN = 4 THEN MT_CARD_TYP_ID END)
FROM (
    SELECT T.MT_CARD_TYP_ID, ROW_NUMBER() OVER(PARTITION BY T.APP_ID ORDER BY T.DT_CREATE) AS RN 
    FROM T_CS_FAC_CC T 
    where app_id='8F9A97B0CB5349429C44F15830EDC18F'
)t1
GROUP BY app_id