私がしたいことの結果のグラフを表示する方法はわかりませんが、私が何をしようとしているのかを見てください。私は、rcが '098000'または '999998'にあるrcnew列を作成しようとしています。rcが '098000'または '999998'にない最も近い以前のpaydateからrcに変更します。ご覧のように、私のコードはpaydateが等しい場所です。なぜなら、これについてどうやって行くのか分からないからです。均等な給料日がない場合、私は先祖のものを取りたい。以下の結果におけるNULLは、あなたが「最も近い前のpaydate
からrc
」を意味している場合は、LAG
機能を使用することができます200000日付を検索する
ern rc paydate rcnew
123 098000 20151221 NULL
123 200000 20151214 200000
456 098000 20151221 200000
456 200000 20151221 200000
SELECT
ern, rc, paydate,
CASE WHEN fss1.rc in ('098000', '999998')
THEN (SELECT TOP 1 rc
FROM [FIN_DataMart].[dbo].[FSSpaydetl] fss
WHERE fss.ern = fss1.ern
AND rc not in ('098000', '999998')
AND fss.paydate = fss1.paydate
ORDER BY paydate DESC)
ELSE fss1.rc
END rcnew
FROM [FIN_DataMart].[dbo].[FSSpaydetl] fss1
GROUP BY ern, rc, paydate
ORDER BY ern, paydate desc
私はあなたが彼の質問はおそらく書くことを意味していることが正しいと考えている彼のコードで大漁「RCは 『098000』または 『999998』ではない、最も近い前のpaydateを」しかし、彼は – Matt
はい、それはですしませんでした私は何を入れようとしたのですか?しかし、私は外からの応募を試み、あなたに戻ってきます。ありがとう! – ajc101
これはbtwで動作しました。ありがとう! – ajc101