0
この問題を完全なコードで再度投稿します。最後に試してみましたが、私はそれをすべて書きませんでしたので、私が使用できなかった答えが得られました。null値を以前の値に置き換えます - SQL Server 2008 R2
私は以下のクエリを持っており、最新のNULL値をその通貨の以前の値に置き換えたいとします。同じ日付に多くのnull値が存在することもありますが、時には1つしかないこともあります。
私はcteBの左側の結合で何かする必要があると思いますか?何か案は? 結果を参照してくださいと、クエリ
With cte as (
SELECT
PositionDate,
c.Currency,
DepositLclCcy
FROM
[Static].[tbl_DateTable] dt
CROSS JOIN (Values ('DKK'), ('EUR'), ('SEK')) as c (Currency)
Left join
(
SELECT
BalanceDate,
Currency,
'DepositLclCcy' = Sum(Case when Activity = 'Deposit' then BalanceCcy else 0 END)
FROM
[Position].[vw_InternalBank]
Group By
BalanceDate,
Currency
) ib
on dt.PositionDate = ib.BalanceDate
and c.Currency = ib.Currency
Where
WeekDate = 'Yes')
Select
*
From cte cteA
Left join
(Select ... from Cte) as cteB
on .....
Order by
cteA.PositionDate desc,
cteA.Currency
現在の結果
PositionDate Currency DepositLclCcy
2017-04-11 SEK 1
2017-04-11 DKK 3
2017-04-11 EUR 7
2017-04-10 SEK NULL
2017-04-10 DKK 3
2017-04-10 EUR 5
2017-04-07 SEK 5
2017-04-07 DKK 3
2017-04-07 EUR 5
望ましい結果
PositionDate Currency DepositLclCcy
2017-04-11 SEK 1
2017-04-11 DKK 3
2017-04-11 EUR 7
2017-04-10 SEK 5
2017-04-10 DKK 3
2017-04-10 EUR 5
2017-04-07 SEK 5
2017-04-07 DKK 3
2017-04-07 EUR 5
感謝を!私は "CTE"データをテンポラリテーブルに送り、外部適用クエリを使用すると完璧に動作します。 しかし、CTEを指すとき、クエリは非常に遅く、ちょうど回り回っているようです。クエリ時間は決して終わりません。 クエリ/ビュー/テーブルで変更/チェック/実行できるものはありますか? – Haggan
@Hagganより優れたパフォーマンスを示す別のバージョンで更新されました。それでもパフォーマンスに問題がある場合は、[Plan @ brentozar.com](https://www.brentozar.com/pastetheplan/)を使用して実行計画を共有してください。[計画の貼り付け方法] (https://www.brentozar.com/pastetheplan/instructions/)。 – SqlZim