缺少该部分时如何更新没有数据的部分的状态?

How to update status for part with nothing data when this part is missed?

我使用 SQL Server 2012 并遇到一个问题:我无法使用无数据 returned 更新状态,其中没有结果 returned 来自 select语句交叉应用函数。

意思是没有数据 return 当连接部件和公司运行时编辑然后更新状态到这个部件,当数据丢失时那个部件没有任何数据。

create table #TempPC   
(  
    PartNumber NVARCHAR(300),  
    CompanyId INT,  
    Status NVARCHAR(200)  
)  

INSERT INTO #TempPC (PartNumber, CompanyId)   
VALUES ('9C06031A2R43FKHFT', 1233345),  
       ('VJ0805AIR5CXAMT', 8433324)

当我 运行 一个 select 如下所示时,它没有 return 某些部分的数据所以我将更新没有数据的状态 returned 到这个部分:

SELECT 
    t.PartNumber, t.CompanyName, pc.FamilyName, t.Status 
FROM  
    #TempPC t    
CROSS APPLY
    [PC].FN_PartCheck_Test (t.[PartNumber], 0, 1, 1, t.CompanyId) pc     
WHERE 
    pc.GroupID > -2 AND pc.PortionID > -2  

当临时 table 上的任何部分和公司错过了函数连接时我需要做什么,然后更新此部分的状态,此部分没有任何数据。

预期结果:

PartNumber            CompanyId     status  
---------------------------------------------------------
9C06031A2R43FKHFT     1233345       No data returned  
VJ0805AIR5CXAMT       8433324       it have data returned  

请问怎么做?

SELECT * 
FROM [PC].FN_PartCheck_Test (t.[PartNumber], 0, 1, 1, t.CompanyId) pc  

RETURN ID PartNumber, CompanyID, FamilyID   

如果我没理解错的话,你想要outer apply,但是你还需要一个子查询:

Select t.PartNumber, t.CompanyName, pc.FamilyName, t.Status
from  #TempPC t outer apply 
      (select pc.*
       from [PC].FN_PartCheck_Test( t.[PartNumber], 0, 1, 1, t.CompanyId) pc     
       where pc.GroupID > -2 And pc.PortionID > -2 
      ) pc ;