我一直在努力查询,我必须在一个查询中为几个不同的列创建一个排名维度。
我尝试多次添加RANK() OVER
子句,但似乎不能在查询中使用大于1的子句。
示例:
John - Sales program A: 10000 - Sales program B: 123 - Sales program C: 585
Maria - Sales program A: 500 - Sales program B: 123213 - Sales program C: 432
我需要3个列,每个销售计划的等级。
答案 0 :(得分:2)
对于您喜欢的任何列,您可以拥有多个rank()运算符。问题/示例数据非常模糊,但您可以这样做:
select
person,
A,
rank() over (order by A) as A_RANK,
B,
rank() over (order by B) as B_RANK,
C,
rank() over (order by C) as C_RANK
from
sales
如果数据不同,例如A,B和C在不同的行而不是列中,您可以使用例如使用PIVOT将行转换为列的CTE。
这也是SQL Fiddle中的例子。