我有一种情况需要使用单个执行sql任务将2个不同查询返回的值存储到2个不同的变量中。我知道单行结果集类型允许我们存储多个值,但它应该以单行返回。任何人都可以帮忙吗?
答案 0 :(得分:1)
如果要将两个不同查询的结果合并为一行,但有两列,则必须确保两者中定义的字段类型相同,并且与输出变量的类型define匹配。也就是说,如下例所示,Row1必须与变量test1的类型相同,Row2必须与变量test2的类型相同。
我使用您的方案进行了测试,似乎有效。
1)设置以下查询,该查询组合了两个嵌套查询的结果。
SELECT
(SELECT Row2 FROM Tests WHERE TestID = 4) AS Row1
,(SELECT Row2 FROM Tests WHERE TestID = 5) AS Row2
2)由于返回的结果都是varchar(或string)类型,我在SSIS包中设置了一个名为test1的数据类型为“String”的变量和一个名为test2的第二个变量。
3)创建了一个执行SQL任务,为SQLStatement定义了上述SQL语句,并将ResultSet设置为“Single row”。
4)对于结果集,我添加了两个新行。第一个是Result Name = 0,Variable Name是“User :: test1”,第二个是Result Name = 1,Variable Name是“User :: test2”。这里的想法是Query中的Row1的结果将转到test1,而Row2将转到test2。
我执行了任务并且成功了。
如果有帮助,请告诉我。
感谢。