提问人:Data_Science_Mick 提问时间:10/25/2023 最后编辑:Thom AData_Science_Mick 更新时间:10/25/2023 访问量:36
对变量值使用 Select 语句
Use a Select Statement for Variable Values
问:
在 SQL 中,我创建了一个表函数,在其定义中,它包含一个名为 @customerid 的变量。因此,select 语句需要包含 (@customerid)。
在对表函数执行 select 语句时,我通常会声明变量值,如下所示。但是,这限制了我只能使用一个客户。然而,我想为所有客户返回有关表函数的数据。
DECLARE @customerid INT = 123456
SELECT * FROM custom.tfnCustomerRatings(@customerid)
我试图将变量的值设置为 select 语句。但是,这会引发如下错误。我需要以不同的方式执行此操作吗?“子查询返回了 1 个以上的值。当子查询跟在 =、!=、<、<= 、>、>= 之后或子查询用作表达式时,这是不允许的。
DECLARE @customerid INT
SET @customerid = (SELECT distinct Customerid FROM compliance.CustomerTable WHERE CountryID = 1)
SELECT * FROM custom.tfnCustomerRatings(@customerid)
提前致谢。
答:
0赞
Data_Science_Mick
10/25/2023
#1
使用交叉应用会在 1 分钟内返回结果。使用以下命令可在 4 秒内返回结果。
SELECT * FROM custom.tfnCustomerRatings(null)
WHERE CustomerID IN (SELECT DISTINCT CustomerID FROM Compliance.Customer WHERE CountryID = 1)
评论
2赞
Aaron Bertrand
10/25/2023
你是说这是解决方案吗?如果没有,那么您应该将信息添加到问题中,而不是答案。如果这确实以某种方式解决了您的问题,请将其标记为已接受(但也删除了 ,这是无缘无故的额外工作,尤其是如果是键)。DISTINCT
Customer.CustomerID
评论
select * from customertable c cross apply dbo.yourfunction(customerId) cf