SQL 与另一个字段中的条件匹配的计数字段

SQL count field that matches criteria from another field

我有一个与帐户 ID 相关联的帐号字段。 我如何获得所有用帐号支付的 ID 的总数(并将新列添加到我的临时 table.

for the sake of sanity
ID = ID
ACCOUNT NUMBER = ACCT
COUNT = COUNT (NEW COLUMN) 

ID |ACCOUNT NUMBER (GIVEN)   
1  |123           
1  |124           
2  |125           
3  |126           
3  |127           
3  |128           
3  |129           
4  |130           
5  |131           
5  |132           
5  |133           
5  |134           
5  |135           
5  |136           
5  |137           


ID |ACCOUNT NUMBER|COUNT  
1  |123           |2     
1  |124           |2     
2  |125           |1     
3  |126           |3     
3  |127           |3     
3  |128           |3     
3  |129           |3     
4  |130           |1     
5  |131           |7     
5  |132           |7     
5  |133           |7     
5  |134           |7     
5  |135           |7     
5  |136           |7     
5  |137           |7     

您需要使用窗口函数。

COUNT([Account Number]) OVER (PARTITION BY [ID])

编辑:

这应该有助于排除计数为 1 的所有内容。

SELECT *
FROM (
  SELECT ID, ACCT, COUNT(ACCT) OVER (PARTITION BY ID) AS [Count]
  FROM my_table) x
WHERE x.[Count] > 1

解决方案使用group by

select T1.ID, T1.ACCT, T2.Total
from #Temp T1 join
  (select ID, COUNT(*) Total
   from #Temp
   group by ID
   having count(*) > 1) T2 on T1.ID = T2.ID