Я пытаюсь создать абстракцию данных в SQL, где я могу выбрать квартал, на который я хочу посмотреть информацию о моем сотруднике. Сейчас я использую систему именования Q1_P1_N для «Quarter 1 Project 1 name», а Q1_P1_W - «вес проекта 1». Сотрудники могут работать над несколькими проектами. До сих пор, что у меня есть:пользовательская переменная в запросе MySQL
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 |
+------+---------+---------+---------+---------+
Благодаря
Не уверен, что я полностью следующий вопрос. Не могли бы вы отобразить данные образца из 'table_test'? – eggyal
сделал изменения. – NateSHolland