teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

補完

2019/05/29 05:56

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,11 +1,11 @@
1
1
  分析関数の[LEAD](https://docs.microsoft.com/ja-jp/sql/t-sql/functions/lead-transact-sql?view=sql-server-2017)を使用して加算テーブルの適用月の範囲情報を求めたものと結合します。
2
2
  ```SQL
3
- select t1.*, t2.ポイント
3
+ select t1.*, coalesce(t2.ポイント, 0) ポイント
4
4
  from 結果テーブル t1
5
5
  left join (
6
6
  select *, lead(適用月, 1, '999999') over(partition by 等級 order by 適用月) 次適用月
7
7
  from 加算テーブル
8
8
  ) t2
9
- on t1.等級=t2.等級 and t1.実施月 >= t2.適用月 and t1.実施月 < t2.次適用月
9
+ on t1.等級 = t2.等級 and t1.実施月 >= t2.適用月 and t1.実施月 < t2.次適用月
10
10
  ```
11
11
  上記では、**lead**により次のデータが無い場合の値を`999999`とすることで範囲が判定されるようにしています。

2

訂正

2019/05/29 05:56

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  select t1.*, t2.ポイント
4
4
  from 結果テーブル t1
5
5
  left join (
6
- select *, lead(適用月, 1, 999999) over(partition by 等級 order by 適用月) 次適用月
6
+ select *, lead(適用月, 1, '999999') over(partition by 等級 order by 適用月) 次適用月
7
7
  from 加算テーブル
8
8
  ) t2
9
9
  on t1.等級=t2.等級 and t1.実施月 >= t2.適用月 and t1.実施月 < t2.次適用月

1

訂正

2019/05/29 05:38

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  select t1.*, t2.ポイント
4
4
  from 結果テーブル t1
5
5
  left join (
6
- select *, lead(適用月, 1, 999999) over(partition by 等級 irder by 適用月) 次適用月
6
+ select *, lead(適用月, 1, 999999) over(partition by 等級 order by 適用月) 次適用月
7
7
  from 加算テーブル
8
8
  ) t2
9
9
  on t1.等級=t2.等級 and t1.実施月 >= t2.適用月 and t1.実施月 < t2.次適用月