需要帮助为这个场景构建一个 SQL 语句,在一个orders
包含orderID, customerID, itemID
和其他杂项的表上。列。
假设表格如下所示:
OrderID CustomerID ItemID Details
1 1234 543 abc
2 1234 643 xxx
3 1234 743 try
4 5678 743 try
5 5678 999 iuy
6 5678 643 xxx
作为附加列,我想要的是,一个计数器在每次新customerID
开始时递增,另一个计数器循环计算客户购买的物品。我正在使用DENSE_RANK()
并且我能够做第一个计数器,但我如何处理第二个?
SELECT
DENSE_RANK() OVER (ORDER BY CustomerID) as Counter,
*
FROM
Orders
ORDER BY
CustomerID ASC
这给了我:
Counter OrderID CustomerID ItemID Details
1 1 1234 543 abc
1 2 1234 643 xxx
1 3 1234 743 try
2 4 5678 743 try
2 5 5678 999 iuy
2 6 5678 643 xxx
最后,我想要的是以Counter2
某种方式添加的列:
Counter Counter2 OrderID CustomerID ItemID Details
1 1 1 1234 543 abc
1 2 2 1234 643 xxx
1 3 3 1234 743 try
2 1 4 5678 743 try
2 2 5 5678 999 iuy
2 3 6 5678 643 xxx