如果一列为空,则使用SQL Server中具有条件的其他列获取数据

时间:2016-09-17 04:57:36

标签: sql sql-server

我需要从表中检索3列:

 OrderNumber, ParentOrderNumber, ClientName

ParentOrderNumber将始终为ClientName,但有些OrderNumber将不会有ClientName

在这种情况下,我需要从ClientName获取ParentOrderNumber

你能帮我解决SQL查询吗?

enter image description here

附件是数据场景的图片。

此处没有可用于ETA-454-5687的客户端名称,因此我需要使用表中的parentOrderNumberTOR-096-2000)来获取它。

1 个答案:

答案 0 :(得分:1)

使用正确加入:

DECLARE @tbl1 as TABLE(
    OrderNumber  VARCHAR(50),
    ParentOrderNumber VARCHAR(50),
    ClientName VARCHAR(50)
)   

INSERT INTO @tbl1 VALUES('ETA-454-5687','TOR-096-2000','')
INSERT INTO @tbl1 VALUES('TOR-096-2442_XCODE',NULL,'')
INSERT INTO @tbl1 VALUES('TOR-096-2000',NULL,'ABCDEF')

SELECT
    T2.OrderNumber,
    T2.ParentOrderNumber,   
    CASE ISNULL(T1.ClientName,'') 
        WHEN '' THEN T2.ClientName
        ELSE T1.ClientName
    END AS ClientName
FROM @tbl1 T1
RIGHT JOIN @tbl1 T2 ON T1.OrderNumber=T2.ParentOrderNumber

<强>输出:

enter image description here