我有一個簡單的查詢返回以下行:合併行的列在SQL Server
當前行:
Empl ECode DCode LCode Earn Dedn Liab
==== ==== ===== ===== ==== ==== ====
123 PerHr Null Null 13 0 0
123 Null Union Null 0 10 0
123 Null Per Null 0 20 0
123 Null Null MyHealth 0 0 5
123 Null Null 401 0 0 10
123 Null Null Train 0 0 15
123 Null Null CAFTA 0 0 20
不過,我需要看到上面列如下:
Empl ECode DCode LCode Earn Dedn Liab
==== ==== ===== ===== ==== ==== ====
123 PerHr Union MyHealth 13 10 5
123 Null Per 401 0 20 10
123 Null Null Train 0 0 15
123 Null Null CAFTA 0 0 20
它更像合併後續行到前面的行哪裏有空白點遇到EarnCode
,DednCode
& LiabCode
。其實我想看到的是把所有東西捲起來放在前面的行上。
在甲骨文,我們有這個LAST_VALUE
函數,我們可以使用,但在這種情況下,我根本無法弄清楚如何處理這個。
在上面的例子中,ECode
的總和值列是Earn
,DCode
是Dedn
,和LCode
Liab
是;請注意,無論何時ECode
,DCode
或LCode
不爲空,Earn
,Dedn
或Liab
列中都有相應的值。
順便說一下,我們正在使用SQL Server 2008 R2。
希望得到您的建議,謝謝。
規則究竟是什麼,什麼時候合併,何時不合適? – Hogan 2012-08-15 03:04:29
我也想看看你的要求。 – 2012-08-15 03:06:51
實際上,唯一的要求是「壓縮」所有代碼,以便儘可能佔用一行,並附帶它的彙總值。在上面的例子中,ECode PerHr是第一行,並且DCode和LCode都沒有;然而,在第二行中,DCode有一個聯盟代碼,這個聯盟代碼會隨着它的Dedn sum而向上移動,佔用null DCode。 LCode MyHealth將移動到第一排佔用空置的LCode。所以基本上,壓縮所有的代碼佔據先前的行,無論ECode,DCode和LCode是否爲空。 – T2C 2012-08-15 03:33:40