一个项目被分配给多个人,每个人员都有不同的项目数量。假设项目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 的记录,以及显示数量是多少的记录分配给分配给 P1 的项目的其他人。如何做到这一点?
你应该有一个针对所需人的变量,比如说@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)