[英]SQL generate sequential id's based on other column(s)
也许最好用一个例子来说明我要做什么:)
说我有下表
SELECT *
INTO #OrderRanking
FROM (
SELECT 'Jim', 1000
UNION ALL
SELECT 'Jim', 500
UNION ALL
SELECT 'Jim', 500
UNION ALL
SELECT 'Jim', 3000
UNION ALL
SELECT 'Bob', 1000
UNION ALL
SELECT 'Bob', 2000
UNION ALL
SELECT 'Bob', 500
UNION ALL
SELECT 'Bob', 500
UNION ALL
SELECT 'Fred', 500
) AS t(Customer, OrderTotal)
我想要的是SELECT
语句中的以下结果
Customer, OrderTotal, CustomerId
'Jim', 1000, 1
'Jim', 500, 1
'Jim', 500, 1
'Jim', 3000, 1
'Bob', 1000, 2
'Bob', 2000, 2
'Bob', 500, 2
'Bob', 500, 2
'Fred', 500, 3
我的实际查询有点复杂,其中源列大于2。
我是个pil子
SELECT *, DENSE_RANK() OVER(ORDER BY Customer DESC)
FROM #OrderRanking
我认为这应该涵盖所有情况!
select customer, ordertotal, dense_rank() over(order by total desc, customer asc)
from (select *, sum(ordertotal) over(partition by customer) total from #orderranking) t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.