我想在SQL中使用CROSS APPLY
,但只希望使用调用的结果如果返回的行数大于1SQL跨应用伯爵
我有以下SQL:
INSERT INTO @dest (val1, val2, val3)
SELECT t2.crossVal, t2.crossVal2, t1.tempVal
FROM @tempTable t1
CROSS APPLY dbo.TableValuedFunction(t1.IDColumn) t2
CROSS APPLY
在某些情况下返回多行,但绝大多数返回一行(因为所有的@tempTable
行都有相应的函数结果)。我很有兴趣只插入那些有的复数对应的结果来自CROSS APPLY
。
我试图避免插入所有然后做删除事后。真的很感兴趣,看看是否有任何类型的聚合行为,我可以适用于该陈述。
任何想法?
编辑:回应SQLMenace的答案。我得到下面的结果,其中左列是tempVal,中间一列是crossVal,右列是crossVal2:
a : 1 : z0
b : 1 : z0
a : 2 : z1
b : 2 : z1
c : 1 : z0
d : 1 : z0
我想沟行“C:1:Z0”和“d:1 :z0“。此外,它可能会影响分组,所以我会提到这一点,我的最终查询有两个从函数返回的列和一个来自临时表。
结束查询基本上是计数tempTable行的父节点,其中有多个父节点(作为函数中的表返回)我想要执行插入并记录父节点的顺序(再次从功能)。 crossVal是父级ID,crossVal2是int的顺序。
谢谢你。我试过了,它大幅减少了返回的结果集,但我认为它完全不起作用 - 我修改了我的问题以显示我得到的结果。 – 2010-09-23 15:22:35