Как это 3 запросы могут быть объединены в 1.Как я могу присоединиться к 3 SQL запросов
Я не смотрю для UNION ALL результата.
Per строки Я хочу прогноз, бюджет, Actual
SELECT
ps.PersonId,
SUM(TF.Hours * r.Amount) as Forecast
FROM ProjectStaffing ps
INNER JOIN Rate r on (r.ProviderId = ps.ProviderId AND r.OrganizationId = ps.OrganizationId AND r.RoleId = ps.RoleId)
INNER JOIN TimeForecast TF on (TF.ProjectStaffingId = ps.Id)
WHERE ps.ProjectId = @ProjectId
GROUP BY ps.PersonId
SELECT
ps.PersonId,
SUM(tb.Hours * r.Amount) as Budget
FROM ProjectStaffing ps
INNER JOIN Rate r on (r.ProviderId = ps.ProviderId AND r.OrganizationId = ps.OrganizationId AND r.RoleId = ps.RoleId)
INNER JOIN TimeBudget tb on (tb.ProjectStaffingId = ps.Id)
WHERE ps.ProjectId = @ProjectId
GROUP BY ps.PersonId
SELECT
ps.PersonId,
SUM(ta.Hours * r.Amount) as Actual
FROM ProjectStaffing ps
INNER JOIN Rate r on (r.ProviderId = ps.ProviderId AND r.OrganizationId = ps.OrganizationId AND r.RoleId = ps.RoleId)
INNER JOIN TimeActual ta on (ta.ProjectStaffingId = ps.Id)
WHERE ps.ProjectId = @ProjectId
GROUP BY ps.PersonId
Я попробовал это, но только получает странные результаты
SELECT
PS.PersonId,
SUM(TF.Hours * r.Amount) as Forecast,
SUM(TB.Hours * r.Amount) as Budget,
SUM(TA.Hours * r.Amount) as Actual
FROM ProjectStaffing PS
INNER JOIN Rate r on (r.ProviderId = PS.ProviderId AND r.OrganizationId = PS.OrganizationId AND r.RoleId = PS.RoleId)
LEFT JOIN TimeForecast TF on (TF.ProjectStaffingId = PS.Id)
LEFT JOIN TimeBudget TB on (TB.ProjectStaffingId = PS.Id)
LEFT JOIN TimeActual TA on (TA.ProjectStaffingId = PS.Id)
WHERE PS.ProjectId = @ProjectId
AND TF.Hours is not null
GROUP BY PS.PersonId
удалить 'и TF.Hours не null' или заменить его' и (TF.Hours не является нулевым или TB.Hours не является нулевым или TA.Hours не равно нулю) ' –
что вы имеете в виду странный результат? можете ли вы просто добавить образец результата к вопросу? – Susilo