Как выбрать записи, где проект назначен для человека, а также записи того же проекта, назначенного другим лицам?
Проект назначается нескольким лицам, каждый с разным количеством проекта. Предположим, что проект A назначен так:
P1 - Qty 50
P2 - Qty 120
P3 - Qty 75
Структура моей таблицы:
Project - AssignedPerson - AssignedDate - AssignedQty
ProjectA - P1 - 12/01/2016 - 50
ProjectA - P2 - 12/01/2016 - 120
ProjectA - P3 - 12/01/2016 - 75
ProjectB - P1 - 15/01/2016 - 210
ProjectB - P3 - 16/01/2016 - 90
ProjectC - P2 - 17/01/2016 - 110
ProejctC - P3 - 17/01/2016 - 120
Теперь скажите, что человек P1 вошел в систему и видит свои назначения. Я хочу показать ему записи, как показано ниже -
Project - AssignedPerson - AssignedDate - AssignedQty
ProjectA - P1 - 12/01/2016 - 50
ProjectA - P2 - 12/01/2016 - 120
ProjectA - P3 - 12/01/2016 - 75
ProjectB - P1 - 15/01/2016 - 210
ProjectB - P3 - 16/01/2016 - 90
В приведенном выше списке показаны записи для P1, а также записи, показывающие, сколько qty назначено другим для проектов, назначенных для P1. Как это сделать?
1 ответ
Решение
Вы должны иметь переменную для желаемого человека, скажем, @person
, Тогда ваш запрос будет выглядеть так, если этот человек P1
:
declare @person nvarchar(10) = 'P1'
select * from TABLE_NAME where AssignedPerson = @person or project in (select project from TABLE_NAME t1 where t1.assignedperson = @person)