このようなテーブルがあります
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
ここでの問題は、アカウント レベルで前のテキストを繰り返す必要があることです。ご覧のとおり、1 の'xyx'
値が2ac
に繰り返されますac
。これは発生しないはずです。理想的な出力は次のようになります
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
それで、レベルでループを書きました。しかし、それはパフォーマンスを殺しています。誰でも抜け道を提案できますか。事前に感謝します。