在這里輸入代碼,在我的SQl服務器上有一個這樣的表
。 NTN | Channel Date_Time
006175A | 黃色 1592021 10: 16: 00: 00
0061751 | 綠色1592021 10: 15: 00: 00
00617523 | 紅色 1592021 10: 14: 00: 00
006175A |綠色1592021 10: 13: 00: 00
006175A |綠色1592021 10: 12: 00: 00
006175A |綠色1592021 10: 11: 00: 00
0061756 | 紅色 1592021 10: 10:00:00.
00617523 | 綠色1692021 10: 10:00:00.
00617523 | 綠色1692021 10: 12:00:00.
現在,我想做的是為我的NTN列顯示連續的綠色,就像這樣:
我想做的是為我的NTN列顯示連續的綠色。
NTN | Greens | Max(Date_Time) | Min(Date_Time)
006175A | 3 | 1592021 10: 13: 00: 000 | 1592021 10: 11: 00: 00
00617523 | 2 | 1692021 10: 12: 00: 000 | 1692021 10: 10:00:00.
誰能幫助我如何使用SQL Server實作這個目標呢
uj5u.com熱心網友回復:WITH
排序 AS
(
SELECT
*,
ROW_NUMBER() OVER ( ORDER BY Date_time
)
AS seq_id。
ROW_NUMBER() OVER (PARTITION BY ntn, channel
ORDER BY date_time
)
AS ntn_channel_seq_id
FROM[/span
你的表
)
SELECT[/span
ntn。
COUNT(*)。
MIN(date_time)。
MAX(date_time)
FROM(date_time)
已排序
WHERE[/span
channel = 'Green
GROUP BY
ntn。
seq_id - ntn_channel_seq_id
HAVING[/span
COUNT(*) >/span> 1
ORDER BY
ntn,
seq_id - ntn_channel_seq_id
德莫與一系列略有不同的測驗集:
如果你發布了CREATE TABLE和任何索引的代碼,我就會試著讓代碼做一些表的全掃描以外的事情。 當然,如果你預先將你需要的資料選入一個臨時表,那么這個最終的報告代碼就不需要被SARGability所束縛了。 這是針對大表進行報告的世界中許多 "分割'n'Conquer "技巧中的一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/306830.html標籤:
下一篇:虹膜殘留矩陣
