我嘗試創建一個代碼片段以使用依賴於分組依據的子句。在SQL中使用分組按狀態摺疊歷史記錄按
所以我有什麼是一樣的東西 表1
Customer Status Date_FROM Date_TO
A 1 1.11.15 2.11.1
A 1 2.11.15 3.11.15
... ... ... ...
A 2 5.11.15 6.11.15
... ... ... ...
A 1 15.11.15 20.11.15
A 2 20.11.15 27.11.15
所以我得到了客戶不斷變化的狀態和時間最多的每日狀態行。因此,在一個簡單的場景(僅2間隔)我可以使用類似代碼:
select Customer, Status, min(Date_FROM), max(Date_TO)
from Table1
group by Customer, Status
但我想在一個更復雜的情況是什麼
表2
Customer Status Date_FROM Date_TO
A 1 1.11.15 5.11.15
A 2 5.11.15 15.11.15
A 1 15.11.15 20.11.15
A 2 20.11.15 27.11.15
是否有某種只要狀態(按Date_FROM排序)不會更改,就會執行聚合的分析型sql函數?
問候
帕特里克
如果你有一個[sqlfiddle](http://sqlfiddle.com),我很高興。 –
不確定你正在瞄準的是什麼,但是'滯後'可能是有趣的(在給定順序上匹配記錄'n'和'n-1',允許你識別何時發生狀態變化)以及'listagg'它將結果集中所有行的列值連接起來,以便您可以檢查狀態值序列是否已更改。 – collapsar
也許你可以使用一個帶有'lag'的子查詢來用來顯示「這是哪個行發生了變化」,然後用WHERE抽取這些行。 – marmarta