나는 totalCount
열에 대한 WhereClause
테이블의 각 행에 대해 동적 SQL을 실행하는 방법은 무엇입니까?
DECLARE @UserGroups TABLE (WhereClause nvarchar(1000), totalCount int)
테이블은 WhereClause
에 대한 몇 가지 값으로 생성 된 이름이 열하지만 아무도을 포함하는 테이블이 있습니다.
WhereClause
의 예는 "FirstName is null"입니다.
기본적으로 테이블의 각 행에 대해 다른 테이블 (사용자)에서 COUNT (*)를 계산하고 위의 표에 totalCount
을 설정해야합니다. 나는 SQL 함수를 만들고 함수 내에서 간부 sp_executesql을 호출 시도
SELECT UG.WhereClause, U.TotalCount
FROM @UserGroups as UG
OUTER APPLY (SELECT COUNT(*) as 'TotalCount' FROM [Users] WHERE UG.WhereClause)
) U
하지만 지원되지 않는 아래
이 작동하지 않습니다.
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
테이블을 채울 수 있습니까?
감사
실제로 아이디어는 좋은 보이지만이 방법은 각 행에 대해 ** 실행해야 할 것이다 D-SQL로 처리 과부하에 추가됩니다 **. 당신은 당신의 요구 사항을위한 또 다른 대안을 찾을 수 있습니까? – Rachcha