我有有,我想組一個列的表,但只有最後一個系列的它(該表有一個時間戳列一起工作)例如表SQL集團通過定時
Type | Time
=============
A | 1:00
A | 1:05
B | 1:10
C | 1:15
A | 1:20
A | 1:25
A | 1:30
我想這些組做函數(SUM(),MAX(),AVG())他們只獲得小組就被打破之前,因此通過選擇一個標準組將無法正常工作。
我想是這樣的:
Type | count_in_series | MinTime
================================
A | 2 | 1:00
B | 1 | 1:10
C | 1 | 1:15
A | 3 | 1:20
因爲誰也不知道當發生變化的方式,給出的數據只是一個樣本,以說明這一點。
這可能嗎?
解決方案
我用這從下面的答案概念。原來我正在使用的程序不允許使用變量或WITH CTE。下面是一個使用子查詢我的解決方案:
SELECT
Type
, max(t_stamp) as maxTime
, min(t_stamp) as minTime
FROM
(SELECT
*
, ROW_NUMBER() OVER (ORDER BY t_stamp desc) - ROW_NUMBER() OVER (PARTITION BY Type ORDER BY t_stamp desc) as grouping
FROM MyTable) as t1
GROUP BY t1.grouping, t1.Type
ORDER BY min(t_stamp) desc
您正在使用哪個數據庫管理系統? SQL Server?甲骨文? – GurV
窗口函數如果引擎支持它,Lead()可以幫助您。如果不是,則可以使用用戶變量並分配行號並加入row_number + 1 = rowNumber,然後將T1.Type與T2.Type進行比較,當不同的重置計數時相同的加計數。 – xQbert
@GurwinderSingh通過點火客戶端SQL express – Evan