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
我有一个与帐户 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