如果一列为空,则使用sql server中的另一列获取数据

时间:2016-09-16 11:25:38

标签: sql-server

在表格中,我需要检索3列:

 OrderNumber, ParentOrderNumber, ClientName

ParentOrderNumber将始终具有ClientName
但是一些OrderNumber不会有ClientName,

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

你能帮我解决一下SQL查询吗

enter image description here

附件是数据场景的图片。 这里没有可用于ETA-454-5687的客户端名称,因此我需要使用同一个表中的parentOrderNumber(TOR-096-2000)来获取它。

5 个答案:

答案 0 :(得分:1)

使用COALESCE这是CASE表达式的简写:

COALESCE(expression1, expression2, ..., expressionN)

的简写
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
...
ELSE expressionN
END

因此你可以使用

SELECT ParentOrderNumber,
       clientname,
       COALESCE(OrderNumber, ParentOrderNumber) as OrderNumber
FROM MyTable

答案 1 :(得分:0)

select 
ParentOrderNumber,
clientname,
case when OrderNumber is null or len(OrderNumber)=0 then clientname else OrderNumber end as OrderNumber
from yourtable

答案 2 :(得分:0)

使用正确加入:

请参考此问题,看看相同的问题:https://stackoverflow.com/a/39543010/6606630

答案 3 :(得分:0)

这可以通过案例陈述

来实现

它执行基本的True False样式逻辑,然后允许执行操作。

Select
    ClientName
,   ParentOrderNumber
,   CASE WHEN [OrderNumber] IS NULL THEN ParentOrderNumber ELSE OrderNumber END AS [OrderNumber]
FROM
    tbl_Table

答案 4 :(得分:0)

我认为我们需要您表中的更多信息。 你有这样的事吗?

exec

然后你需要加入你的表

using (var context = new BloggingContext()) 
{ 
    var blogs = context.Blogs.SqlQuery("dbo.GetBlogs").ToList(); 
}