Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于查询问题

chinasa  发表于:2015-04-28 10:12:47  
复制

�������ش˸���

 

 

Top
chinasa 发表于:2015-04-28 10:13:19

我有一张业务表和一张合约表,我需要在业务表中读取符合业务条件的合约信息,现在遇到的问题是合约表中的代码如何匹配:

1.业务表的代码全部是标准的5位代码。

2.合约中的代码可能是5位代码或2位代码,或者任意组合(中间以斜杠分开)。

3.其中2位代码是5位代码的前两位。

 

我的需求是:

当合约号相同,业务表代码被包含在合约表的代码中,则取合约价格。

 



煮江品茶 发表于:2015-04-28 14:56:50
SELECT a.*, b.合约价格
FROM 业务表 AS a INNER JOIN 合约表 AS b ON (instr(b.代码,a.业务代码)>0) AND (a.合约号=b.约号);


chinasa 发表于:2015-04-28 15:26:46

煮版,您好!

     感谢您的回复。我现在的难题是业务表中的代码是5位标准的,而合约表维护的并不是全部是5位,比如:A001合约的业务代码是“JP/HKHKG/SGSIN”,或者我把我想到的实现方案表达一下,看看是否可以实现:

在约号相同的情况下,合约表的代码字段以斜杠(/)来拆分,业务表的业务代码或业务代码前两位,如果与拆分的结果一致,则取合约价格。

 



chinasa 发表于:2015-04-28 15:29:02

比如:

合约表
约号 代码 合约价格 拆分结果
A001 JP/HKHKG/SGSIN 10 JP和HKHKG和SGSIN
A002 DEHAM 11 DEHAM
A008 AUBNE 12 AUBNE
A010 JP 13 JP
A011 IT 14 IT
A111 DEHAM 15 DEHAM

 



煮江品茶 发表于:2015-04-28 16:12:45

按以下文章的思路自行处理即可:

http://www.accessoft.com/article-show.asp?id=10118


无需分解,只是一个简单的包含关系而已,多加一个表达式即可:

SELECT a.*, b.合约价格
FROM 业务表 AS a INNER JOIN 合约表 AS b ON (a.合约号=b.约号) AND ((instr(b.代码,a.业务代码)>0) OR (instr(b.代码,left(a.业务代码,2))>0));



chinasa 发表于:2015-04-28 17:04:37
除了感谢还是感谢啊!谢谢谢谢~~

总记录:6篇  页次:1/1 9 1 :