我正在使用PostgreSql並試圖爲我的日誌生成報告查詢,但不幸失敗... 基本上我有記錄其他實體狀態更改的LOG表。所以爲了簡單起見,可以說它有STATUS和STATUS_CHANGE_DATE列。現在,每個狀態更改都會更新此記錄表,並顯示新的狀態和更改的時間。我需要的是每個狀態的持續時間和次數狀態(相同的狀態可以多次使用,例如從狀態1到2然後回到1)。我想爲它構建一個視圖,並在我的Java應用程序報告中使用,將該視圖映射到hibernate實體。不幸的是,我不是那種經驗豐富的SQL,所以也許有人可以給我一些什麼是最好的解決方案的提示,因爲我嘗試了幾件事,但基本上不知道該怎麼做。 比方說,我們有:SQL查詢報告持續時間,直到下一個日誌條目
STATUS STATUS_CHANGE_DATE
1 2013 01 01
2 2013 01 03
1 2013 01 06
3 2013 01 07
我想要的結果將是包含狀態1,2倍和3天的期限和狀態2 1次用3天的期限也一表(假定狀態3月底(或接近)並且它的持續時間不是必需的)。
任何想法?
請提供樣品結果闡明你所要求的。 –
最簡單的解決方案是使用'LEAD()'函數來計算跨度;看到這裏:http://stackoverflow.com/questions/7974866/how-to-compare-the-current-row-with-next-and-previous-row-in-postgresql。 – 2013-08-16 22:51:15
我認爲*當狀態爲特定值時,您試圖將狀態邊緣列表(狀態更改時的記錄)轉換爲時間範圍列表。你的解釋很難遵循,這裏沒有足夠清晰的樣本數據/預期結果信息,所以我不能做比猜測更多的事情。 –