很抱歉这个问题,但我无法解决这个简单的问题。
我有这张桌子:
ID_Type Item
-----------------
A 1
P 2
P 3
A 4
P 5
A 6
我需要计算一个"组"基于ID_Type字段的增量计数器,其中该字段具有" A"值。这是预期的结果:
ID_Type Item Counter
-----------------------------
A 1 1
P 2 1
P 3 1
A 4 2
P 5 2
A 6 3
因此每次ID_Type =' A'出现,我需要递增计数器。任何帮助都会被贬低。
答案 0 :(得分:4)
在SQL Server 2012+中,您可以使用累积总和:
select t.*,
sum(case when id_type = 'A' then 1 else 0 end) over (order by item) as counter
from t;
这比相关子查询方法更有效,特别是在较大的数据集上。
答案 1 :(得分:3)
一种方法是子查询:
SELECT ID_Type, Item, (
SELECT COUNT(*) FROM MyTable t2
WHERE t2.Item <= t1.Item
AND t2.ID_Type='A'
) AS Counter
FROM MyTable t1
ORDER BY Item ASC
这适用于任何版本的SQL Server。