クエリに次の句があります。サービスエントリと呼ばれるテーブルと、サービスエントリパーツと呼ばれる2番目のテーブルがあります。サービスエントリレコードには、複数のサービスエントリ部分が含まれる場合があります。サービスエントリパーツテーブルには、次の形式のservicetypeidsという列があります:行1:1、2、3、行2:3,4など。テーブル値関数を使用して、サービスパーツのどのサービスエントリがサービスタイプIDを持っているかを確認します。たとえば、パラメータは1または2、3などです。クエリのその部分は正常に機能し、クロスアプライなどを実行します。パラメータ@ServiceTypesがNULLの場合、servicetypeids列を検索せず、サービスエントリに存在するサービスエントリを返すだけです。部。私はまだパーツテーブルと結合していて、パーツのアクティブ状態は正常に機能しています。
S.ID IN(SELECT DISTINCT ServiceEntryID
FROM
ServiceEntryPart M
CROSS APPLY
dbo.SplitStrings_Moden(M.ServiceTypeIDs, N',') M2
JOIN dbo.SplitStrings_Moden(@ServiceTypes, N',') P ON M2.Item = P.Item
INNER JOIN Part ON M.PartID = Part.ID
WHERE
@ActivePart is null or @ActivePart = Part.Active))