如何根据行中的类似元素对行进行编号。例如。从这张表
Id ColA ColB
1. A. B
2. A. C
3. A. c
4. A. B
5. B. A
6. B. A
我希望得到下表
Id ColA ColB. Grouped by
1. A. B. 1
2. A. C. 2
3. A. c. 2
4. A. B. 1
5. B. A. 3
6. B. A. 3
逻辑是:Id 1和4的行在A列和B列中具有相似的元素,因此它们的编号与相同的组编号相同。这个数字本身并没有发挥作用。 因此,对于Id 2和3的行,它们会得到相同的数字。
答案 0 :(得分:2)
最简单的方法是根据两列只有rank
行。由于第2行和第3行似乎具有相同的"Grouped by"
,无论C
与c
的情况如何不同(假设这不是错字),您可以拥有根据列的upper
(或lower
)对它们进行排名:
SELECT colA, colB,
RANK() OVER (ORDER BY UPPER(colA), UPPER(colB)) AS "Grouped by"
FROM my_table
答案 1 :(得分:2)
你可以这样做。
select p.id,p.cola,p.colb,se2.counter from
(SELECT se.*,ROWNUM as counter
FROM (SELECT COLA,COLB FROM table1
GROUP BY COLA,COLB) se
) se2, table1 p
where
p.cola = se2.cola
and
p.colb = se2.colb