簡體   English   中英

如何在SQL Server 2008上創建此條件分組字段?

[英]How can I create this conditional grouped field on SQL Server 2008?

抱歉這個問題,但我無法解決這個簡單的查詢。

我有這張桌子:

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'的記錄時,我都需要增加計數器。 任何幫助將不勝感激。

在SQL Server 2012+中,您可以使用累積總和:

select t.*,
       sum(case when id_type = 'A' then 1 else 0 end) over (order by item) as counter
from t;

這將比相關子查詢方法更有效,尤其是在較大的數據集上。

一種方法是子查詢:

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM