我的语句如下,目的是匹配dcy表中所有的service_id dcy有20W条记录,可是匹配出来为什么少了很多!
SELECT dcy.service_id, dcy.user_id, dcy.city_code,
dcy.user_name, dcy.acts_name, dct.acts_key,
dct.customer_type_key, yb_detail,
SUM (DECODE (( TO_DATE ('20080622', 'yyyymmdd')
- dct.snap_date
),
0, total_fee,
1, total_fee,
2, total_fee,
3, total_fee,
4, total_fee,
5, total_fee,
6, total_fee,
0
)
) AS benzhou
FROM dmr.dm_call_yujin dcy, dm.dm_call_ticket dct
WHERE dcy.service_id (+)= dct.service_id
AND dct.snap_date >
( TRUNC (TO_DATE ('20080622', 'yyyymmdd'), 'dd')
- 7
)
GROUP BY dcy.service_id,
dcy.user_id,
dcy.city_code,
dcy.user_name,
dcy.acts_name,
dct.acts_key,
dct.customer_type_key,
yb_detail
SELECT dcy.service_id, dcy.user_id, dcy.city_code,
dcy.user_name, dcy.acts_name, dct.acts_key,
dct.customer_type_key, yb_detail,
SUM (DECODE (( TO_DATE ('20080622', 'yyyymmdd')
- dct.snap_date
),
0, total_fee,
1, total_fee,
2, total_fee,
3, total_fee,
4, total_fee,
5, total_fee,
6, total_fee,
0
)
) AS benzhou
FROM dmr.dm_call_yujin dcy, dm.dm_call_ticket dct
WHERE dcy.service_id (+)= dct.service_id
AND dct.snap_date >
( TRUNC (TO_DATE ('20080622', 'yyyymmdd'), 'dd')
- 7
)
GROUP BY dcy.service_id,
dcy.user_id,
dcy.city_code,
dcy.user_name,
dcy.acts_name,
dct.acts_key,
dct.customer_type_key,
yb_detail
难道是AND dct.snap_date > ( TRUNC (TO_DATE ('20080622', 'yyyymmdd'), 'dd') - 7 )
这个的原因,因为dct表中数据实在太多了,而我要做的事周报 所以只取一周的数据!
我得到的结果是245441
其实按照我的想法是 279469就正确了!
select *
FROM dmr.dm_call_yujin dcy, dm.dm_call_ticket dct
WHERE dcy.service_id (+)= dct.service_id
AND dct.snap_date >
( TRUNC (TO_DATE ('20080622', 'yyyymmdd'), 'dd')
- 7
) 看一下RESULT;
FROM dmr.dm_call_yujin dcy, dm.dm_call_ticket dct
WHERE dcy.service_id (+)= dct.service_id
看一下RESULT;
就知道哪个地方有问题!