Sql server 2008 合并两个表中的数据,其中一个表优先

Sql server 2008 合并两个表中的数据,其中一个表优先,sql-server-2008,tsql,Sql Server 2008,Tsql,我试图将两个表中的数据合并到一个结果中,但不复制CourseID中的id,结果中优先考虑用户的补全 用户课程完成表 课程分组表 预期结果 我想找到一个用户的所有课程完成情况,并用未完成的项目补充该列表。例如,如果我想要组1和用户1的列表,我会得到 CourseID, SystemComplete, UserComplete ====================================== 1, NULL, 12/06/2012 2, NULL, 12/06/2012 3, 10/06

我试图将两个表中的数据合并到一个结果中,但不复制
CourseID
中的id,结果中优先考虑用户的补全

用户课程完成表 课程分组表 预期结果 我想找到一个用户的所有课程完成情况,并用未完成的项目补充该列表。例如,如果我想要组
1
和用户
1
的列表,我会得到

CourseID, SystemComplete, UserComplete
======================================
1, NULL, 12/06/2012
2, NULL, 12/06/2012
3, 10/06/2012, 12/06/2012
4, NULL, NULL
12, NULL, NULL --not in completion record
我试过的 我试过几个问题,但我似乎无法解决这个问题。下面的那个是我在里面找到的东西

…但这只返回一行结果

我得到的最接近的结果是
UNION
ing两个查询,但是我不知道如何将
UserComplete
SystemComplete
数据放入查询中

SELECT CourseID
FROM UserCompletion
WHERE
  EmployeeID = 1

UNION

SELECT CourseID
FROM CoursesToGroup
WHERE
  LearningPathID = 1
这将为
CourseID
返回正确的结果,但是,正如我前面所述,我不知道如何将完成数据放在那里,并且仍然删除重复的
CourseID

我错过了什么

SELECT CourseID, SystemComplete, UserComplete
FROM UserCompletion
WHERE
UserId = 1

UNION

SELECT CourseId, null, null
FROM CoursesToGroup
where GroupId = 1
and CourseId NOT IN 
    (SELECT CourseId From UserCompletion
     WHERE UserId = 1)
SELECT
  COALESCE(uc.CourseID, cg.CourseID) as CourseID
FROM
  CoursesToGroup as cg
FULL JOIN UserCompletion as uc ON
  uc.CourseID = cg.CourseId
WHERE
  uc.UserID = 1 AND
  cg.GroupID = 1
SELECT CourseID
FROM UserCompletion
WHERE
  EmployeeID = 1

UNION

SELECT CourseID
FROM CoursesToGroup
WHERE
  LearningPathID = 1
SELECT CourseID, SystemComplete, UserComplete
FROM UserCompletion
WHERE
UserId = 1

UNION

SELECT CourseId, null, null
FROM CoursesToGroup
where GroupId = 1
and CourseId NOT IN 
    (SELECT CourseId From UserCompletion
     WHERE UserId = 1)