我想创建一个查询,该查询为数据库表中的每个ID分配行号,并且某些特定值始终获得固定行号。例如,如果col2
中的值为A
,则行号应始终设置为1
。同样,如果col2
包含值B
,则行号应始终为2
。col2
中的所有其他值应从3
开始按连续顺序分配行号。
预期结果:
myid col1 col2 row_number
----------------------------------
1 foo A 1
1 bar B 2
1 foobar C 3
1 foobar D 4
2 foobar A 1
2 foob X 3
3 hello B 2
3 hello Z 3
3 hi Y 4
Here就是一个无法正常工作的示例。
1条答案
按热度按时间o8x7eapl1#
听起来像是要以特定的偏移量开始
row_number
,忽略常量值并为它们分配一个常量行号。你可以做一些有点丑陋的事情,像这样:
结果:
行号从+2开始(取决于常数值[A,B]的数量),为每个常数值提供一个值,该值将在
row_number
窗口函数中排在最后,因此其余值将排在最前面。