gpt4 book ai didi

sql-server-2008 - 在表值函数tvf上做一系列union语句的非动态方法

转载 作者:行者123 更新时间:2023-12-04 05:50:04 24 4
gpt4 key购买 nike

我有一个表值函数,它返回有关特定帐户的一些详细信息。像这样的东西。复杂得多,但你明白了。如果这有所不同,它是一个多行 TVF(不是内联语句)

select * from dbo.TBFDetailsByAccountKey(1234)

-----------------------------------------------
date | amount | detail |
-----------------------------------------------
4/1/2012 | 10.23 | payment stuff |
4/2/2012 | 12.40 | other stuff |
4/2/2012 | 14.23 | second pmt today |

我现在需要在一系列 UNION ALL 语句中重复调用同一个 TVF,以便返回一组存款中包含的所有帐户 key 的详细信息。有没有办法在不求助于动态 sql 的情况下做到这一点?

我目前的方法是这样的……但它使用动态 sql,我一直认为应该有更好的“非动态”方式。
DECLARE @pResult varchar(max)

SELECT @pResult = COALESCE(@pResult + ' UNION ALL ', '') +
'SELECT * FROM dbo.TBFDetailsByAccountKey(' +
Cast(AccountKey AS VarChar(25)) + ')'
FROM Account WHERE DepositKey = @pDepositKey

EXEC(@pResult) /* execute dynamic sql created above */

最佳答案

好像CROSS APPLY旨在完成这项工作:

SELECT AccountDetails.*
FROM Account
CROSS APPLY
(
select *
from dbo.TBFDetailsByAccountKey(Account.AccountKey)
) AccountDetails
WHERE Account.DepositKey = @pDepositKey

关于sql-server-2008 - 在表值函数tvf上做一系列union语句的非动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com