SSIS “查找组件” 查找范围内的数据.

liangCK 2009-10-10 12:18:56
SSIS “查找组件” 查找范围内的数据.
我们知道.使用查询组件,可以查找相等的数据.
比如.我现在的数据是’liang’我要查另一个表中.外键列的值等于liang的其它列的信息.
这时候.我们只要将列映射一下即可.



但是,如果要查某个范围内的数据.则简单的这样关联列.就不可以了.

比如看这个例子.
CREATE TABLE tb1(ID int PRIMARY KEY,col decimal(10,2))
INSERT tb1 SELECT 1 ,26.21
UNION ALL SELECT 2 ,88.19
UNION ALL SELECT 3 , 4.21
UNION ALL SELECT 4 ,76.58
UNION ALL SELECT 5 ,58.06
UNION ALL SELECT 6 ,53.01
UNION ALL SELECT 7 ,18.55
UNION ALL SELECT 8 ,84.90
UNION ALL SELECT 9 ,95.60

CREATE TABLE tb2(ID INT IDENTITY PRIMARY KEY,Mindata decimal(10,2),
Maxdata decimal(10,2),Description varchar(20))
INSERT tb2(MinData,MaxData,Description)
SELECT null,30,'<30' UNION ALL
SELECT 30,60,'>=30 AND <60' UNION ALL
SELECT 60,70,'>=60 AND <70' UNION ALL
SELECT 70,80,'>=70 AND <80' UNION ALL
SELECT 80,90,'>=80 AND <90' UNION ALL
SELECT 90,null,'>=90'

tb1表中id为1的col小于30,所以它在tb2找到的数据是’<30’
如此类推.

这样的查找.”查找组件”绝对可以完成.

1.
在”数据流”中,设置好oledb数据源,在此,数据源的设置不再详说.此数据源的源表是tb1
2.
添加一个查找组件.并将数据源的绿色工作流指向此查找组件.
3.
双击查找组件.进入查找组件编辑器.在”引用表”中.选择tb2


4.
再进入”列”设置映射关系以及输出列Description

5.
进入”高级”选项卡.选中”启用内存限制”.并选中”修改SQL语句”.
并将SQL语句修改如下:
select * from
(select * from [dbo].[tb2]) as refTable
where (? < Maxdata OR Maxdata IS NULL) AND (? >= Mindata OR Mindata IS NULL)


6.
点击”参数”按钮.两个参数的输入都为col

7.
完成查找组件的设置.再设置目标.即可.

...全文
1944 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
idonot 2011-11-28
  • 打赏
  • 举报
回复
呵呵,原来是发帖传播经验的啊,赞一下
wanglingzhong 2011-11-28
  • 打赏
  • 举报
回复
学习了,以前真没用过
期待更多类似这样的帖子
yanwen0206 2011-11-21
  • 打赏
  • 举报
回复
那如果是 lookup mobile 或者 email 是否存在
用or的话会笛卡尔积 能否在高级用union呢
BIConsulting 2010-12-19
  • 打赏
  • 举报
回复
Range Lookup问题,msdn上也多次讨论了。
Microsoft Connect上也有人提出过。
kloze11 2010-11-29
  • 打赏
  • 举报
回复
厉害。。这么细的
zhoule110 2010-11-29
  • 打赏
  • 举报
回复
敢问LZ 如何设置列的映射关系,tb1的col如何引用tb2的mindata、maxdata ?
tfangfang09 2009-11-30
  • 打赏
  • 举报
回复
为什么我做的就错了-_-
guidahuasheng 2009-10-23
  • 打赏
  • 举报
回复

ding
claro 2009-10-16
  • 打赏
  • 举报
回复
帮顶
Zoezs 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lkyusst 的回复:]
认真学习了弱弱的问下,能解释下这句话吗?where (? < Maxdata OR Maxdata IS NULL) AND (? >= Mindata OR Mindata IS NULL)
[/Quote]
问号在SSIS里面是参数,这就是参数化的SQL语句。
ws_hgo 2009-10-12
  • 打赏
  • 举报
回复
xx
pbsh 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jiangshun 的回复:]
引用 17 楼 beirut 的回复:
引用 11 楼 lkyusst 的回复:
认真学习了弱弱的问下,能解释下这句话吗?where (?  < Maxdata OR Maxdata IS NULL) AND (? >= Mindata OR Mindata IS NULL)

三元运算符


就是一般的sql语句只是在ssis中?相当于一个参数
[/Quote]

連接類型 參數標記
ADO ?

ADO.NET 和 SQLMOBILE @<參數名稱>

ODBC ?

EXCEL 和 OLE DB ?

wsxcdx 2009-10-12
  • 打赏
  • 举报
回复
xx
jiangshun 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 beirut 的回复:]
引用 11 楼 lkyusst 的回复:
认真学习了弱弱的问下,能解释下这句话吗?where (? < Maxdata OR Maxdata IS NULL) AND (? >= Mindata OR Mindata IS NULL)

三元运算符
[/Quote]

就是一般的sql语句只是在ssis中?相当于一个参数
bancxc 2009-10-10
  • 打赏
  • 举报
回复
明天照这个做一遍
-狙击手- 2009-10-10
  • 打赏
  • 举报
回复
牛人

你当BI的猪吧
bancxc 2009-10-10
  • 打赏
  • 举报
回复
学习 sf
黄_瓜 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lkyusst 的回复:]
认真学习了弱弱的问下,能解释下这句话吗?where (? < Maxdata OR Maxdata IS NULL) AND (? >= Mindata OR Mindata IS NULL)
[/Quote]
三元运算符
xuejie09242 2009-10-10
  • 打赏
  • 举报
回复
关注。
gisyellow 2009-10-10
  • 打赏
  • 举报
回复
感觉这个功能会比较有用。
加载更多回复(11)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧