我有一个表,其中包含一个名为WhereClause
DECLARE @UserGroups TABLE (WhereClause nvarchar(1000), totalCount int)
该表已填充了一些值,WhereClause
但没有为totalCount
列填充。
一个例子WhereClause
是“FirstName 为空”。
基本上对于表中的每一行,我需要从另一个表(用户)计算 COUNT(*) 并在totalCount
上表中设置。
以下不起作用:
SELECT UG.WhereClause, U.TotalCount
FROM @UserGroups as UG
OUTER APPLY (SELECT COUNT(*) as 'TotalCount' FROM [Users] WHERE UG.WhereClause)
) U
我尝试创建一个 sql 函数并在函数中调用 exec sp_executesql 但它不受支持。
CREATE FUNCTION [dbo].[fn_UserGroupCount]
(
@whereClause as NVARCHAR(1000)
)
RETURNS @returnValue TABLE (TotalCount INT)
AS
BEGIN
DECLARE @stmt nvarchar(1500)
SET @stmt = 'SELECT COUNT(*) FROM [dbo].[Users]
WHERE ' + @whereClause
Exec sp_executesql @stmt
RETURN
END
SELECT * FROM [dbo].[fn_UserGroupCount]('Subject is null')
@UserGroups
如前所述,如何填充我的表格?
谢谢