我试着用
CROSS APPLY
在SQL中,但只希望在返回的行计数大于1时使用调用的结果。
我有以下SQL:
INSERT INTO @dest (val1, val2, val3)
SELECT t2.crossVal, t2.crossVal2, t1.tempVal
FROM @tempTable t1
CROSS APPLY dbo.TableValuedFunction(t1.IDColumn) t2
在某些情况下返回多行,但绝大多数情况下返回一行(与所有行一样)
@tempTable
行具有函数的相应结果)。我只想插入那些
相应的结果来自
交叉应用
我正在尝试避免插入所有内容,然后再执行删除操作。我真的很想看看是否有任何类型的聚合操作可以应用到该语句。
有什么想法吗?
编辑:
为了回应SqlMenage的回答。我得到以下结果,其中左列是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”行。另外,它可能会影响分组,所以我将提到这一点,我的最终查询有两个从函数返回的列和一个从temp表返回的列。
结束查询基本上是统计可试探行的父级,其中有多个父级(作为表从函数返回)我想插入并记录父级的顺序(同样从函数返回)。crossVal是父ID,crossVal2是int的顺序。