2017-01-29 16 views
-1

私はしばらくの間これを進めてきました。私はいくつかの助けをしたいと思います。TSQL外部結合の値を繰り返します。

私のデータベースはSQL Server 2008 R2です(私は非常に古いと知っています)。

私は基本的に、ジョブごとに週当たりの値を取得するトランザクションテーブルを持っています。

次の値が見つかるまで、ジョブの最後の値を繰り返したいと思います。

私のテーブルのデータがいくつか含まれています。最後の列(必要な値)は私が達成しようとしているものです。

ありがとうございました。

ブルース

image of data

私は、以下のSQLを試してみたが、それは正しい値を与えていません。添付ファイルをご覧ください。

SQL

select t.*, t2.percentcomp as value_needed 

#1あなたはOUTER APPLYを使ってやりたいことができますトン

outer apply 
(select top 1 t2.* 
    from #1 t2 
    where t2.job_skey = t.job_skey and 
     t2.COST_CODE_SKEY=t2.COST_CODE_SKEY and 
     t2.period_end_date <= t.period_end_date and 
     t2.percentcomp is not null 

    order by t.JOB_SKEY,t.phase,t.period_end_date desc 
) t2 

添付ファイル.. view of SQL. Value_needed should begin with 5

+0

質問を編集し、サンプルデータと希望する結果*を質問*に含めてください。 –

+0

これは 'INSERT'時に行うことを意味します。そのため、後続の行は、指定されていない場合は同じジョブの前の値を継承します。またはそれをオンザフライで完了する 'SELECT'ステートメントの後ろにいますか? – dlatikay

+0

こんにちは、これは挿入ではなく、結果を表示するためのクエリです。 – user3200403

答えて

0

から:

select t.*, t2.percent_comp as value_needed 
from t outer apply 
    (select top 1 t2.* 
     from t t2 
     where t2.job_skey = t.job_skey and 
      t2.period_end_date_id <= t.period_end_date_id and 
      t2.percentcomp is not null 
     order by t2.period_start_date desc 
    ) t2; 

enter image description here

+0

こんにちはゴードン、コメントありがとう、それは期待された結果を与えていません。必要な列の値にPERCENTCOMPが最初に表示されていません。 ここに画像の説明を入力するとコメントが追加されました。 – user3200403

+0

@ user3200403。 。 。あなたのデータを詳しく調べると、 'start_date'と' end_date'は同じ順序にはなりません。私はあなたが 'end_date'ではなく' start_date'によって順序付けをしたいと思います。 –

+0

私は混乱しています、開始日も終了日もありません。 1つは日付で、もう1つの列は整数に変換されます。 – user3200403

関連する問題