という名前の列を含むテーブルがありますWhereClause
DECLARE @UserGroups TABLE (WhereClause nvarchar(1000), totalCount int)
テーブルにはいくつかの値が入力されていますが、列には何も入力されてWhereClause
いません。totalCount
その例は、WhereClause
「FirstName が null です」です。
基本的に、テーブルの各行について、別のテーブル (Users) から 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
前述のようにテーブルにデータを入力するにはどうすればよいでしょうか?
ありがとう