我有两个表tbl_DaysWeeksMonths(左表)和tbl_Telephony(右表)。 tbl_DaysWeeksMonths记录了一年中的每一天的列(Row_Date / Week / Month),而tbl_Telephony每天都有数百个代理的电话数据和列(row_date / agent / calls / talk time)(注意:每个代理只有记录)一周5-6天而不是每天。)
我想加入这两个表,以便每个代理都有一周中每一天的记录,无论他们是否在一天内接听电话。我想在顾问没有接听电话的日子里显示空白记录(日期字段除外)。 E.g:
## Date ## ## Agent ## ## Calls ## ## Talk Time ##
1. 26/05/2012 | James | 40 | 560
2. 27/05/2012 | James | |
3. 28/05/2012 | James | 34 | 456
4. 29/05/2012 | James | |
5. 30/05/2012 | James | 40 | 643
6. 31/05/2012 | James | 36 | 345
7. 01/06/2012 | James | 31 | 160
我正在尝试使用以下代码,但我不认为这是正确的。有关更好的代码使用的任何建议。请帮忙。
SELECT tbl_DaysWeeksMonths.Row_Date,
[tbl_Telephony].Consultant,
[tbl_Telephony].i_acdtime
FROM tbl_DaysWeeksMonths
LEFT JOIN [tbl_Telephony]
ON tbl_DaysWeeksMonths.Row_Date = [tbl_Telephony].row_date;
答案 0 :(得分:0)
您也可以使用此查询。
SELECT tbl_DaysWeeksMonths.Row_Date, [tbl_Telephony].Consultant, [tbl_Telephony].i_acdtime
FROM tbl_DaysWeeksMonths
LEFT OUTER JOIN [tbl_Telephony] ON tbl_DaysWeeksMonths.Row_Date = [tbl_Telephony].row_date;
答案 1 :(得分:0)
步骤1 - 假设您有一个表(例如,名为Consultants
)列出每个不同的顾问,创建一个查询(例如,名为Consultant Days
),生成所有可能的日期和顾问组合。它可能看起来像这样:
SELECT [Consultants].Consultant, tbl_DaysWeeksMonths.Row_Date
FROM [Consultants], tbl_DaysWeeksMonths;
如果您没有Consultants
表,则可以使用选择tbl_Telephony
中列出的不同顾问的查询替换它。换句话说,您可以创建一个如下所示的Consultants
查询:
SELECT DISTINCT Consultant FROM [tbl_Telephony];
第2步 - 创建外部加入tbl_Telephony
到Consultant Days
的查询。它可能看起来像这样:
SELECT [Consultant Days].Row_Date, [Consultant Days].Consultant, [tbl_Telephony].i_acdtime
FROM [Consultant Days]
LEFT JOIN [tbl_Telephony]
ON [Consultant Days].Consultant = [tbl_Telephony].Consultant
AND [Consultant Days].Row_Date = [tbl_Telephony].row_date;
这也假设row_date
中的tbl_Telephony
值与Row_Date
中的tbl_DaysWeeksMonths
值相匹配 - 换句话说,row_date
中的tbl_Telephony
值1}}是整天(也就是说,不包含时间组件)。这也假设i_acdtime
中的tbl_Telephony
值是给定顾问和日期的总通话时间(而不是给定呼叫的通话时间)。据推测,tbl_Telephony
中有另一列可以给出给定顾问和日期的cals总数,您可以将其添加到查询中以获取您希望提出问题的“呼叫”列。