高手请进!! 连接查询难题
表A
time number duration
11:23 8610114 3
11:25 862153167855 10
12:13 8613511111111 3
11:55: 85299998888 7
... .....
表B
description country_code area_code price
中国北京 86 10 0.1
中国上海 86 21
中国其他 86 0.2
香港手机 852 9 1.5
香港其他 852 1
.... .... ... ....
根据表A中number 中的 country_cde 和are_code, 找到相应费率, 按description 分类统计出每个地区的总费用,
本人解决如下: select b.description ,sum(a.duraion*b.price) from A join B
on a.number like b.country_code+b.area_code+ '% '
但出现一个问题是 例如 数据8610114 在 '中国北京 '中被累加过,同时在 '中国其它 '中
又被加了一遍,因为它同时满足 '8610% ' 和 '86% ' 希望A中的数据,只根据B表统计一次,谢谢!
[解决办法]
可以這樣
Select b.description ,sum(a.duration*b.price) As total from A join B
on a.number like b.country_code+b.area_code+ '% '
Where [description] Not Like '% ' + N '其他 '
Group By b.description
Union
Select b.description ,sum(a.duration*b.price) As total from A join B
on a.number like b.country_code + '% '
Where [description] Like '% ' + N '其他 '
And Not Exists (Select [description] From B T Where A.number Like country_code + area_code + '% ' And [description] Not Like '% ' + N '其他 ')
Group By b.description
[解决办法]
设计有问题
用其他判断不太牢靠
看看另一贴http://community.csdn.net/Expert/topic/5595/5595161.xml?temp=.4671289