我有两个桌子A和B。
A保存出站呼叫的数据。(通话时间和电话号码)。
B保存入站呼叫的数据。(电话收到时间和电话号码)。
我必须显示数据的所有出站电话,从同一号码收到入站电话,在7天内,放置一个出站电话。如果我在7天内没有接到那个号码的电话,那就不应该考虑那个出站电话。例:我3月1日从'9999999999‘号打了一个出站电话,3月5日接到了同一个号码'9999999999’的入站电话。我必须在我的报告中显示这个电话。
另一种需要考虑的情况是:如果我在3月1日和3月3日等打了一个出外电话,那么我必须考虑在一个星期内只打第一个出站电话,从出站呼叫开始,只有当我在3月1日打了一个入站电话时,才能显示结果。
我表中的一个电话号码的数据如下:
表A:
电话号码\出站通话时间(以日期为单位)
9999999999 -2015年-12-23 xx:xx:xx
9999999999 -2015年-12-29 xx:xx:xx
9999999999 -2015年-12-30 xx:xx:xx
9999999999 - 2016-01-05 xx:xx:xx
9999999999 - 2016-01-06 xx:xx:xx
9999999999 - 2016-01-07 xx:xx:xx
9999999999 - 2016-01-07 xx:xx:xx
9999999999 -01-08 xx:xx:xx
9999999999 -01-19 xx:xx:xx
9999999999 -01-21 xx:xx:xx
9999999999 -01-22 xx:xx:xx
9999999999 -01-26 xx:xx:xx
9999999999 -01-28 xx:xx:xx
9999999999 -01-29 xx:xx:xx
9999999999 - 2016-02-02 xx:xx:xx
9999999999 - 2016-02-03 xx:xx:xx
9999999999 - 2016-02-04 xx:xx:xx
9999999999 - 2016-02-09 xx:xx:xx
9999999999 - 2016-02-11 xx:xx:xx
9999999999 - 2016-02-12 xx:xx:xx
表B:
电话号码:入站通话时间(以日期为单位)
9999999999 -01-08 xx:xx:xx
9999999999 -01-13 xx:xx:xx
9999999999 -01-19 xx:xx:xx
9999999999 -01-31 xx:xx:xx
9999999999 - 2016-02-11 xx:xx:xx
9999999999 - 2016-02-12 xx:xx:xx
我的产出应该是:
电话号码\出站呼叫时间_入站呼叫时间(以日期为单位)
9999999999 - 2016-01-05 xx:xx:xx 2016-01-08 xx:xx:xx
9999999999 -01-19 xx:xx:xx 2016-01-19 xx:xx:xx
9999999999 -01-26 xx:xx:xx 2016-01-31 xx:xx:xx
9999999999 - 2016-02-04 xx:xx:xx 2016-02-11 xx:xx:xx
我的问题是:
SELECT a.phonenumber, Min(a.outboundcall), Min(b.inboundcall)
FROM TableA a
join TableB b
ON (a.phonenumber=b.phonenumber)
WHERE (a.outboundcall < b.inboundcall)
AND (DATEDIFF(MI, a.outboundcall,b.inboundcall) between 0 AND 10800)
group by a.phonenumber,
DATEADD(WEEK, DATEDIFF(WEEK, '19000101', a.outboundcall)/7*7, '19000101'),
DATEADD(WEEK, DATEDIFF(WEEK, '19000101', b.inbouncall)/7*7, '19000101')
ORDER BY 1,2,3还应考虑时间问题。有人能帮我写一个关于这个的查询吗?
发布于 2016-03-05 22:42:31
SELECT a.phonenumber, FLOOR(DATEDIFF(day,PhStartDates.stDate,a.outboundcall)/7),
FLOOR(DATEDIFF(day,PhStartDates.stDate,b.inboundcall)/7),
MIN(a.outboundcall), MIN(b.inboundcall)
FROM TableA a
join TableB b
ON a.phonenumber=b.phonenumber
join (SELECT phonenumber, Min(outboundcall) as StDate
FROM TableA
group by phonenumber) as PhStartDates
ON a.phonenumber=PhStartDates.phonenumber
WHERE (a.outboundcall < b.inboundcall)
AND FLOOR(DATEDIFF(day,PhStartDates.stDate,a.outboundcall)/7) = FLOOR(DATEDIFF(day,PhStartDates.stDate,b.inboundcall)/7);
GROUP BY a.phonenumber, FLOOR(DATEDIFF(day,PhStartDates.stDate,a.outboundcall)/7), FLOOR(DATEDIFF(day,PhStartDates.stDate,b.inboundcall)/7)
ORDER BY 1,4,5;https://stackoverflow.com/questions/35820649
复制相似问题