如何在数据库表中为每个“帐户ID”添加唯一标识符?

时间:2015-10-05 13:37:18

标签: sql sql-server

我正在生成一个临时表,其中包含每个“帐户ID”的重复条目。我希望所有具有相同帐户ID的记录都有一个标识符。例如,帐户ID为1234的所有记录的标识符都应为1.帐户ID为4321的所有记录的标识符都应为2.

我已在此字段的临时表中添加了一列,但我不知道如何根据帐户ID填充它。

3 个答案:

答案 0 :(得分:0)

您需要另一列来区分您的行。我们假设您还有一个日期:

Accounts.AccountID
Accounts.Created

让我们找到原始记录:

SELECT 
 A.AccountID, 
 A.Created, 
 CASE WHEN 
  A.Created = MinCreated 
 THEN 
  1
 ELSE
  2
 AS "Version"
FROM
 Accounts AS A
INNER JOIN
(
 SELECT 
  AccountID, 
  MIN(Created)
 FROM
  Accounts 
 GROUP BY
  AccountID
) AS B
ON 
 A.AccountId = B.AccountId 

答案 1 :(得分:0)

您不需要额外的标识符,只需按帐号分组,然后选择每个标识符的最大值(日期),例如:

Select accountID, max(lastUpdated)
from t
group by accountID

答案 2 :(得分:0)

您可以将DENSE_RANK()功能与ORDER BY AccountId;

一起使用
SELECT *, DENSE_RANK() OVER (ORDER BY AccountId) Identifier
FROM YourTable

<强> Fiddle demo