2013-10-16 35 views
-4

我有这种类型的表。行号相关

no CustID    Amount 
1  1234    1000 
2  2345    500 
3  1234    1000 
4  6789    500 
5  1234    1000 
6  6789    350 
7  2345    600  
8  1234    250 

我需要这样的

No CustId    Amount 
1  1234    1000 
2  1234    1000 
3  1234    1000 
4  1234    250 
1  2345    500 
2  2345    600 
1  6789    500 
2  6789    350 

输出请提供SQL此

+0

你试过了什么? –

+0

我假设你在预期输出中混合了第5和第6行。你也应该多处理一些问题。包含关于RDBMS和版本的信息。解释你在做什么。你已经尝试了什么。 –

+0

在MySQL中工作:您可以在'No'列设置'AUTO_INCREMENT()',并使用'PRIMARY_KEY(否,CustId)'。这将自动为每个客户创建唯一的号码并将它们存储在表中,就像您的输出一样。在这种情况下,您需要重新插入数据,而不需要设置“否”列。 – Atle

回答

-1
select * from TABLE_NAME order by CustId; 
2
SELECT row_number() over (partition by CustId order by Amount desc) No, 
CustId, Amount 
FROM <table> 
ORDER BY CustId, Amount DESC 
1

由于行数都是在下面的查询组根据客户的ID被分配将在T-SQL中工作:

select ROW_NUMBER() over (partition by CustID order by Amount desc) as [No],CustID,Amount 
from table1