缺少该零件时如何更新无数据零件的状态?

问题描述

我使用SQL Server 2012,但有一个问题:我无法更新状态,即没有数据返回,而选择语句的交叉结果不适用。

意思是在加入零件和公司运作时没有数据返回,然后在缺少数据时将该零件的状态更新为该零件的状态。

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

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

当我运行如下所示的select时,它不返回某些部分的数据,因此我将更新状态,而没有数据返回到该部分:

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

当缺少具有功能的临时表上的任何零件和公司,然后不使用该零件的任何数据来更新该零件的状态时,我该怎么办。

预期结果:

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

该怎么做?

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

RETURN ID PartNumber,CompanyID,FamilyID   

解决方法

如果我的理解正确,那么您需要20125,1,但您还需要一个子查询:

outer apply

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...