我在oracle数据库中有一些值,其键值对存储如下
KEY VALUE SortOrder REGN NO
---------------------------------------
KEY1 VALUE1 1 123
KEY2 VALUE2 2 123
KEY1 VALUE3 3 123
KEY1 VALUE4 1 456
KEY1 VALUE5 3 456
KEY1 VALUE6 2 456
KEY2 VALUE7 1 678
KEY2 VALUE8 3 678
Key 2 VALUE9 2 678对于每个键,我都有针对REGN的排序顺序。每个REGN最多允许三个条目,但它可以是任意键。我需要通过对特定键的REGN进行分组来获得结果,并且应该按排序顺序排序。对于KEY1结果,如下所示
REG NO OPTION1 OPTION 2 OPTION 3
------------------------------------------
123 VALUE 1 VALUE 3
456 VALUE 4 VALUE 6 VALUE 5如何使用oracle语句获取它?
发布于 2013-10-31 00:36:24
这个解决方案)
SELECT REGNO, KEY, MAX(CASE WHEN SortOrder = 1 THEN VALUE ELSE '' END) AS OPTION1,
MAX(CASE WHEN SortOrder = 2 THEN VALUE ELSE '' END) AS OPTION2,
MAX(CASE WHEN SortOrder = 3 THEN VALUE ELSE '' END) AS OPTION3
FROM SomeTable
GROUP BY REGNO, KEY
SELECT REGNO, KEY, MAX(CASE WHEN num= 1 THEN VALUE ELSE '' END) AS OPTION1,
MAX(CASE WHEN num= 2 THEN VALUE ELSE '' END) AS OPTION2,
MAX(CASE WHEN num= 3 THEN VALUE ELSE '' END) AS OPTION3
FROM
(
SELECT ROW_NUMBER() OVER(PARTITION BY REGNO, KEY ORDER BY SortOrder) AS num, * FROM SomeTable
) T GROUP BY REGNO, KEYhttps://stackoverflow.com/questions/19696357
复制相似问题