CREATE TABLE [dbo].[結果テーブル]( [社員コード] [varchar](6) NOT NULL, [等級] [tinyint] NOT NULL, [実施月] [varchar](6) NOT NULL, CONSTRAINT [PK_結果テーブル] PRIMARY KEY CLUSTERED ( [社員コード] ASC, [実施月] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ; CREATE TABLE [dbo].[加算テーブル]( [等級] [tinyint] NOT NULL, [適用月] [varchar](6) NOT NULL, [ポイント] [int] NOT NULL, CONSTRAINT [PK_加算テーブル] PRIMARY KEY CLUSTERED ( [等級] ASC, [適用月] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ; INSERT INTO [dbo].[加算テーブル] VALUES (0,'202010',12); INSERT INTO [dbo].[加算テーブル] VALUES (0,'201905',10); INSERT INTO [dbo].[加算テーブル] VALUES (0,'201901',9); INSERT INTO [dbo].[加算テーブル] VALUES (1,'202010',10); INSERT INTO [dbo].[加算テーブル] VALUES (1,'201905',7); INSERT INTO [dbo].[加算テーブル] VALUES (1,'201901',6); INSERT INTO [dbo].[加算テーブル] VALUES (2,'201901',5); INSERT INTO [dbo].[加算テーブル] VALUES (2,'201812',4); INSERT INTO [dbo].[加算テーブル] VALUES (3,'201901',3); INSERT INTO [dbo].[加算テーブル] VALUES (3,'201812',1); INSERT INTO [dbo].[結果テーブル] VALUES ('000107',0,'201904'); INSERT INTO [dbo].[結果テーブル] VALUES ('000108',1,'201905'); INSERT INTO [dbo].[結果テーブル] VALUES ('000109',2,'201905'); INSERT INTO [dbo].[結果テーブル] VALUES ('000110',3,'201905'); INSERT INTO [dbo].[結果テーブル] VALUES ('000111',3,'201905'); INSERT INTO [dbo].[結果テーブル] VALUES ('000107',2,'201812'); INSERT INTO [dbo].[結果テーブル] VALUES ('000108',3,'201809');
前提・実現したいこと
上記のような2つのテーブルがあります。
結果テーブルは社員のテスト結果の等級と実施日を持っており
加算テーブルは等級の加算ポイントを持っているテーブルとなります。
結果テーブルの等級と加算テーブルの等級を結びつけてポイントを求めたいのですが
加算テーブルのポイントは適用月によって加算されるポイントが変動します。
例:
等級0で2019年4月なら9ポイント
等級0で2019年5月なら10ポイント
ポイントを求める条件として、結果テーブルの実施月を加算テーブルの適用月と照らし合わせて
ポイントを算出したいと思っています。
試したこと
SELECT A.社員コード, A.等級, A.実施月, B.ポイント FROM 結果テーブル AS A LEFT JOIN 加算テーブル AS B ON A.等級 = B.等級
上記のようなクエリだと、結果テーブル1件に対して複数の加算テーブルが出力されます。
それを結果テーブルの実施月を条件としてポイントを取得することは可能でしょうか?
データは画像だけではなくテキストでも貼ってください
可能であればcreate table/insertで例示してもらうとベター
ちなみに、結果テーブルのid=7のように
適用月が加算テーブルの適用月のどれよりも低い場合は
加算を0とすればよいのでしょうか?
SQLの動作確認が必要な場合は、
質問に CREATE TABLE と INSERT を https://teratail.com/help#about-markdown の[コードを入力] で載せると適切な回答が付き易いです。
回答有り難うございます。
CREATE TABLEとINSERTを追記いたしました。
yambejpさん
>ちなみに、結果テーブルのid=7のように
>適用月が加算テーブルの適用月のどれよりも低い場合は
>加算を0とすればよいのでしょうか?
0で問題ありません。
回答1件
あなたの回答
tips
プレビュー