実現したいこと
データの都合上、2つのテーブルをLEFT JOINした際にNULLになる場合、別の条件で計算した値を挿入したい
前提
以下の2つのテーブルが存在します。
GasAmount
|日付|県|単価|
|:--:|--:|
|2020/4/1|A|120|
|2020/4/1|B|122|
|2020/4/1|C|124|
|2020/5/1|A|121|
|2020/5/1|B|123|
|2020/5/1|C|125|
|2020/6/1|A|122|
|2020/6/1|B|124|
|2020/6/1|C|126|
GasAmountは月別のガソリン単価を示します。
Distance
|従業員|日付|県|距離|
|:--:|:--:|:--:|
|a|2020/4/1|A|1|
|b|2020/4/1|B|2|
|c|2020/4/1|E|3|
|a|2020/5/1|B|4|
|b|2020/5/1|A|5|
|c|2020/5/1|E|6|
|a|2020/6/1|A|7|
|b|2020/6/1|B|8|
|c|2020/6/1|C|9|
Distanceは各従業員が毎月どの県で何km走っているかを示します。
これらを組み合わせ、各従業員がいつ、どれだけ運賃=単価*距離
を貰えるか計算します。
発生している問題・エラーメッセージ
SQL
1SELECT [Distance].*, [GasAmount].[単価] 2FROM [Distance] 3LEFT JOIN [GasAmount] ON 4[Distance].[県] = [GasAmount].[県] 5AND [Distance].[日付] = [GasAmount].[日付]
これにより、テーブルを組み合わせることができます。
|従業員|日付|県|距離|単価|
|:--:|:--:|:--:|:--:|
|a|2020/4/1|A|1|120|
|b|2020/4/1|B|2|122|
|c|2020/4/1|E|3||
|a|2020/5/1|B|4|123|
|b|2020/5/1|A|5|121|
|c|2020/5/1|E|6||
|a|2020/6/1|A|7|122|
|b|2020/6/1|B|8|124|
|c|2020/6/1|C|9|126|
しかし、データの都合上、[Distance].[県]
には[GasAmount].[県]
に存在しないデータが入ることがあり、その場合、その日付の県Aの単価を入れたいです。
その場合のSQLコードを教えてください。
補足情報(FW/ツールのバージョンなど)
SQL Server 2017
回答1件
あなたの回答
tips
プレビュー