2014-12-15 3 views
0

Я довольно новичок в SQL и не могу понять, как получить то, что мне нужно. Я пытаюсь получить только Unique project_id и добавить все «hours_worked» к каждому фазу_id.MySQL: выбор уникального имени, но совпадение столбцов

Это то, что я пытаюсь выполнить (фото):

project  | phase1 | phase 2 | phase 5 | 
"myproject1" | 0  |  4  | 11.5 | 

это возможно в одном заявлении?

enter image description here

+0

Что такое RDBMS, что вы используете (MYSQL или без разницы)? – potashin

+0

Известно ли заранее определенное количество фаз или может быть переменное количество фаз по проекту? –

+0

Будет установленный предел, не более 7 – benishky

ответ

2

Запись из памяти:

SELECT project_id, 
sum(case when phase_id=1 then hours_worked else 0 end), 
sum(case when phase_id=2 then hours_worked else 0 end), 
sum(case when phase_id=5 then hours_worked else 0 end) 
from table_name 
group by project_id 
+0

SQL Fiddle: http://sqlfiddle.com/#!2/17d95/6 – JohnLBevan

0

Предполагая, что MySQL и фазы известны заранее, мы можем рисковать:

select project_id, 
sum(if(phase_id=1,hours_worked,0)) as phase1, 
sum(if(phase_id=2,hours_worked,0)) as phase2, 
sum(if(phase_id=3,hours_worked,0)) as phase3, 
... 
from theTableOfProjects 
group by project_id;