関数から生成された 2 つの一時テーブルを別のテーブルと比較する SP があります。私の問題は、各一時テーブルをステップ実行する代わりに、同時に両方を通過することです。目的の結果を得るために、一度に 1 つずつ各テーブルをステップ実行するコードの書き方がわかりません。
DROP PROCEDURE uspJudgments;
GO
CREATE PROCEDURE uspJudgments
@fullName varchar(100), @fullName1 varchar(100)
AS
BEGIN
SELECT *
INTO #tmpFullname
FROM dbo.DelimitedSplit8K(@fullName, ',')
SELECT *
INTO #tmpFullname1
FROM dbo.DelimitedSplit8K(@fullName1, ',')
SELECT *
FROM #tmpFullName
SELECT *
FROM #tmpFullName1
DECLARE @MaxRownum int
SET @MaxRownum = (SELECT MAX(ItemNumber) FROM #tmpFullname)
DECLARE @Iter int
SET @Iter = (SELECT MIN(ItemNumber) FROM #tmpFullname)
DECLARE @MaxRownum1 int
SET @MaxRownum1 = (SELECT MAX(ItemNumber) FROM #tmpFullname1)
DECLARE @Iter1 int
SET @Iter1 = (SELECT MIN(ItemNumber) FROM #tmpFullname1)
DECLARE @Name varchar(25)
DECLARE @Name1 varchar(25)
WHILE @Iter <= @MaxRownum AND @iter1 <= @Maxrownum1
BEGIN
SET @Name = (SELECT Item FROM #tmpFullname WHERE ItemNumber = @Iter)
SET @Name1 = (SELECT Item FROM #tmpFullname1 WHERE ItemNumber = @Iter1)
SELECT *
--INTO #tmpDefSelect
FROM defendants_ALL
WHERE combined_name LIKE '%' + @Name + '%' AND combined_name LIKE '%' + @Name1 + '%';
SET @Iter = @Iter + 1
SET @Iter1 = @Iter1 + 1
END
END
DROP TABLE #tmpFullname
DROP TABLE #tmpFullname1
EXEC uspJudgments @fullName = 'grein,smit', @fullName1 = 'joh,jon,j.'
grein のすべての結果を取得する必要があります -- joh、jon、j。そして、smit、joh、jon、j。
現在、上記のコードは grein joh AND smit, jon. のみを返します。データベースでは、最初の組み合わせの結果は返されず、jonathon smith と jon smith の 38 件の結果が返されます。各一時テーブルを適切に処理して、目的の結果を得るにはどうすればよいですか?