繁体   English   中英

SQL根据其他列生成顺序ID

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM