SQLでデータ抽象化を作成しようとしています。ここで、従業員情報を確認する四半期を選択できます。現在、「第1四半期のプロジェクト1の名前」にネーミングシステムQ1_P1_Nを使用しており、Q1_P1_Wは「...プロジェクト1の重み」です。従業員は複数のプロジェクトに取り組むことができます。これまでのところ、私が持っているのは:
CREATE PROCEDURE effort_lookup4(IN proj_name VARCHAR(20), IN quarter INT(1))
BEGIN
SET @Qx_P1_N = CONCAT('Q', quarter, '_P1_N');
SET @Qx_P2_N = CONCAT('Q', quarter, '_P2_N');
SET @Qx_P1_W = CONCAT('Q', quarter, '_P1_W');
SET @Qx_P2_W = CONCAT('Q', quarter, '_P2_W');
SET @var1 = (SELECT sum(@Qx_P1_W) FROM table_test WHERE @Qx_P1_N = proj_name);
SET @var2 = (SELECT sum(@Qx_P2_W) FROM table_test WHERE @Qx_P2_N = proj_name);
私の問題は、@Qx_P1_Nまたは@Qx_P1_Wを使用してクエリを呼び出すと、実際には正しいクエリが渡されず、何が間違っているのか理解できないことです。これは非常に簡単なはずです。SQLの使用は初めてです。
これは、テーブルがどのように見えるかの例です。ただし、四半期を通じてQ2_P1_Nなどに続きます。
+------+---------+---------+---------+---------+
| EMPID| Q1_P1_N | Q1_P2_N | Q1_P1_W | Q1_P2_W |
+------+---------+---------+---------+---------+
| 1000 | ProjA | ProjB | 0.50 | 0.50 |
| 1001 | ProjA | NULL | 1.00 | NULL |
| 1010 | ProjB | NULL | 1.00 | NULL |
| 1011 | ProjA | ProjB | 0.50 | 0.50 |
+------+---------+---------+---------+---------+
ありがとう