我有這樣編程與COALESCE功能
ac asg asgc asgdt
1 abc abc 2012-06-01 00:00:00.000
1 NULL NULL 2012-06-02 00:00:00.000
1 xyz xyz 2012-07-01 00:00:00.000
1 NULL NULL 2012-07-02 00:00:00.000
2 NULL NULL 2012-07-03 00:00:00.000
2 lmn lmn 2012-08-01 00:00:00.000
2 NULL NULL 2012-08-02 00:00:00.000
我重複以前的文字刪除空值的表,所以我寫了
Declare @asgc nvarchar(10)
UPDATE coalescetest
SET
@asgc = COALESCE(asgc, @asgc),
asgc = COALESCE(asgc, @asgc)
此代碼給我下面的輸出
ac asg asgc
1 abc abc
1 NULL abc
1 xyz xyz
1 NULL xyz
2 NULL xyz
2 lmn lmn
2 NULL lmn
問題在於,它應該在帳戶級別重複以前的文本。如圖所示,'xyx'
值爲ac
1重複爲ac
2.這不應該發生。理想的輸出應該是這樣的
ac asg asgc
1 abc abc
1 NULL abc
1 xyz xyz
1 NULL xyz
2 NULL NULL
2 lmn lmn
2 NULL lmn
所以,我在ac
級別寫了一個循環。但它正在殺死性能。任何人都可以請suggenst出路。非常感謝。
表格具有* no *固有順序。你很幸運,在這個小樣本的情況下,它會發生*甚至接近你想要的更新。我們需要的第一件事是我們可以定義一個訂單的列,通過它我們可以確定哪些行先於其他行。 –
@Damien嗨,我確實有datetime referecne coumn.I更新了我的示例表。我的實際表有數百萬條記錄。在將數據傳遞給Coalesce函數之前,我將按日期時間列對數據進行排序。 – Gokul
我已更新我的答案以使用此專欄。 –