2

クエリに次の句があります。サービスエントリと呼ばれるテーブルと、サービスエントリパーツと呼ばれる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))
4

0 に答える 0