我正在尝试组合三个表,应用程序、音频、视频。它们都具有相同的架构,但音频和视频中存在“重复”。视频中的条目也将始终显示在音频中。我将重复项放在引号中,因为整行没有重复,而是基于它们的三个字段。
音频表
**Calls | StartTime | EndTime | Quality | CallType**
John | 3/15/16 8:01 | 3/15/16 9:01 | 0 | Audio
Mary | 3/15/16 9:35 | 3/15/16 10:34 | 1 | Audio
视频表
**Calls | StartTime | EndTime | Quality | CallType**
John | 3/15/16 8:01 | 3/15/16 9:01 | 1 | Video
Sue | 3/15/16 11:32 | 3/15/16 11:50 | 0 | Video
应用表
**Calls | StartTime | EndTime | Quality | CallType**
Matt | 3/15/16 7:31 | 3/15/16 8:01 | 1 | App
Bill | 3/15/16 1:32 | 3/15/16 2:50 | 0 | App
我想将它们组合到一个表中,当有重复时保留来自视频的数据 - 所以你会看到约翰只出现一次,质量和呼叫类型来自视频表:
**Calls | StartTime | EndTime | Quality | CallType**
Mary | 3/15/16 9:35 | 3/15/16 10:34 | 1 | Audio
John | 3/15/16 8:01 | 3/15/16 8:01 | 1 | Video
Sue | 3/15/16 11:32 | 3/15/16 11:50 | 0 | Video
Matt | 3/15/16 7:31 | 3/15/16 8:01 | 1 | App
Bill | 3/15/16 1:32 | 3/15/16 2:50 | 0 | App
我试图使用 EXCEPT 和 UNION 来选择音频中没有出现在视频中的所有行,然后加入视频,但是因为它认为它们是独一无二的,因为 calltype 总是不同的,而且质量可能会不同。
SELECT Calls, StartTime, EndTime, Quality, CallType
FROM Audio
EXCEPT
SELECT Calls, StartTime, EndTime, Quality, CallType
FROM Video
UNION
SELECT Calls, StartTime, EndTime, Quality, CallType
FROM Video
UNION
SELECT Calls, StartTime, EndTime, Quality, CallType
FROM Application