如何排除交叉申请使其有条件

时间:2012-07-31 03:10:21

标签: sql-server-2008

我的查询中有以下子句。我有一个叫做服务条目的表和一个叫做服务条目部分的第二个表。服务条目记录可以具有多个服务条目部分。服务条目部分表有一个名为servicetypeids的列,格式如下:第1行:1,2,3,第2行:3,4,依此类推。我使用Table值函数来查看服务部分中哪些服务条目具有服务类型id,例如我的param可以是1或2,3,依此类推。查询的那部分工作正常我交叉应用等等。我想要做的是如果我的参数@ServiceTypes是NULL然后我不想搜索agaiants 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))

0 个答案:

没有答案