I have below tables also shared a script to generate data and related schema:
CREATE TABLE #User
(
Id INT,
Name NVARCHAR(200)
)
INSERT INTO #User VALUES (1, 'James')
INSERT INTO #User VALUES (2, 'Luke')
INSERT INTO #User VALUES (3, 'Miranda')
INSERT INTO #User VALUES (4, 'Lisa')
CREATE TABLE #Task
(
Id INT,
Name NVARCHAR(200),
Assignee INT,
Evaluator INT
)
INSERT INTO #Task VALUES (1, 'Test 1', 1, 3)
INSERT INTO #Task VALUES (2, 'Test 2', 0, 1)
INSERT INTO #Task VALUES (3, 'Test 3', 0, 0)
INSERT INTO #Task VALUES (4, 'Test 4', 1, 4)
What I have tried:
DECLARE @UserId INT = 1;
SELECT *
FROM #Task T
JOIN #User U ON T.Assignee = @UserId OR T.Evaluator = @UserId
DECLARE @UserId INT = 1;
SELECT *
FROM #Task T
JOIN #User U ON T.Assignee = @UserId AND T.Evaluator = @UserId
Expected output:
Id Name Assignee Evaluator Id Name EvalName
1 Test 1 1 3 1 James Miranda
2 Test 2 0 1 1 NULL James
4 Test 4 1 4 1 James Lisa
EDIT:
I have changed some data in the existing question also specified in the output, which was missed at the time of posting question.
In the updated result I just need evaluator name in case evaluator available otherwise null or empty string