我正在尝试在 SQL 中创建一个数据抽象,我可以在其中选择要查看员工信息的季度。现在我使用命名系统 Q1_P1_N 来表示“Quarter 1 Project 1 name”,而 Q1_P1_W 是“...project 1 weight”。员工可以从事多个项目。到目前为止,我所拥有的是:
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 |
+------+---------+---------+---------+---------+
谢谢