(タイムスタンプ)は私のテーブルの1つにあり、それにはプロジェクトのduration
という列があり、first_day_of_month
列しか持たない別のテーブルと結合する必要があります。毎月の初日、およびその他の関連情報を保持します。カレンダーテーブルを使用してデータの履歴ビューを生成
表1
id project_id created_date duration
1 12345 01/01/2015 10
2 12345 20/10/2015 11
3 12345 10/04/2016 13
4 12345 10/08/2016 15
表2
project_id month_start_date
12345 01/01/2015
12345 01/02/2015
12345 01/03/2015
12345 01/04/2015
...
12345 01/08/2016
期待される結果
project_id month_start_date duration
12345 01/01/2015 10
12345 01/02/2015 10
...
12345 01/10/2015 11
12345 01/11/2015 11
...
12345 01/04/2016 13
12345 01/05/2016 13
12345 01/06/2016 13
...
12345 01/08/2016 15
私ができるトンになりたいですo第2の表にリストされたデータを歴史的に提示する。したがって、基本的には、month_start_date
に関連する同じduration
を返すようにクエリを設定して、別のdateadd(month,datediff(month,0,created_date),0) = first_day_of_month
が満たされるまで値が繰り返されるようにします。
これは私のクエリです:
select table2.project_name,
table2.month_start_date,
table1.duration,
table1.created_date
from table1 left outer join table2
on table1.project_id=table2.project_id
where dateadd(month,datediff(month,0,table1.created_date),0)<=table2.month_start_date
group by table2.project_name,table2.month_start_date,table1.duration,table1.created_date
order by table2.month_start_date asc
が、私はこの上で繰り返さレコードを取得する:私は
project_id month_start_date duration
12345 01/01/2015 10
12345 01/02/2015 10
...
12345 01/10/2015 10
12345 01/10/2015 11
...
12345 01/04/2016 10
12345 01/04/2016 11
12345 01/04/2016 13
...
12345 01/08/2016 10
12345 01/08/2016 11
12345 01/08/2016 13
12345 01/08/2016 15
を取得しています
結果、誰が助けることはできますか?
ありがとうございました!
サンプルテーブルのデータと予想される結果を追加します。現在のクエリの試行も表示してください! – jarlh
私はあなたが現在持っているテーブルのスキーマが助けになると付け加えます。 –
私は投稿を編集しました:) – Synamoon