Sql Server COALESCE函数用法

昨天产品提出新需求,要让产品名字与编码不一致的数据进行合并计算,起初采用GROUP BY做分组求和无法满足用户需求,我新增了一个主从产品别名表,但效果不佳,一直是这样的效果:

//别名数据
CS01  葡萄	    CS04  巨峰葡萄
CS02  玫瑰葡萄	CS03  青提
	    
//我的数据
CS01  葡萄	    10
CS02  玫瑰葡萄	20
CS03  青提	    30
CS04  巨峰葡萄	40

//左关联分组数据。
	    10
	    20
	    30
CS04  巨峰葡萄	40
//想要效果
CS01  葡萄	    50
CS02  玫瑰葡萄	50

为了达到效果,我发现了sql server中的COALESCE函数。sql 语句试列如下:


```sql
CREATE TABLE Employees (
    EmployeeID INT,
    Nickname VARCHAR(50),
    Fullname VARCHAR(50)
);

-- 插入示例数据
INSERT INTO Employees (EmployeeID, Nickname, Fullname) VALUES
(1, 'John', 'John Doe'),
(2, NULL, 'Jane Smith'),
(3, 'Mike', 'Mike Johnson'),
(4, NULL, 'Emily Brown');

SELECT 
    EmployeeID,
    COALESCE(Nickname, Fullname) AS DisplayName  -- 优先显示 Nickname,如果 Nickname 为 NULL 则显示 Fullname
FROM Employees;

结果
COALESCE 函数用于返回其参数中的第一个 非空 值。简单的说,它会从左到右依次检查每个参数,遇到第一个不为 NULL 的值时,就会返回该值。如果所有参数都是 NULL,则返回 NULL。

COALESCE 函数的解释:
对于 EmployeeID = 1,Nickname 为 John,因此返回 John。
对于 EmployeeID = 2,Nickname 为 NULL,因此返回 Fullname,即 Jane Smith。
对于 EmployeeID = 3,Nickname 为 Mike,因此返回 Mike。
对于 EmployeeID = 4,Nickname 为 NULL,因此返回 Fullname,即 Emily Brown。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值