sql coalesce函数 (全网最详细解读 案例)

文章详细介绍了SQL中的COALESCE函数,用于处理NULL值,首先解释了函数的基本用法,即按顺序返回第一个非NULL表达式。接着,通过1.0和2.0两个版本的示例展示了如何在行转列操作中使用COALESCE,尤其是在订单状态流转表的数据处理中,如何选择重要状态的时间点。通过案例,强调了COALESCE在数据整合和分析中的实用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 一、函数COALESCE

二、解读 

三、使用

1.0版本 

2.0版本——行转列中会用到coalesce()

案例sql


 一、函数COALESCE

COALESCE(expression_1, expression_2, ...,expression_n)

二、解读 

coalesce( f1, f2, f3, ... fn)

coalesce用于:f1有值,返回f1,若为null,则看f2,f2有值,则返回f2,若为null,继续往后。以此类推。

简单说就是:f1若为null,则取f2,f2若为null,则取f3,以此类推。

三、使用

1.0版本 

select coalesce(start_time,end_time,'2023-01-01') from t1

        如果start_time有值,则取的是start_time的值,如果start_time为null,则取end_time,如果end_time也为null,则返回2023-01-01

2.0版本——行转列中会用到coalesce()

        例如:一个单号下,有多条数据,状态值不一样。即 group by id,status;,一个id下有多种status。现在希望:这个id下,如果status的值既有 状态1 也有 状态2,则使用 状态1,如果没有 状态1 只有 状态2,就使用状态2。但由于是多行数据,行与行的对比很复杂。

        先进行 行转列,将这个id下的多行数据转成一行。status的值作为不同的字段保存。

sql如下:

select id,
max((case status when 'input' then data end )) as status_input,
max((case status when 'output' then data end)) as status_output

from t1
group by id

结果大致如下:没有值的就为null

factory|start_date|input_value|auto_value|
-------+----------+-----------+----------+
t1     |2023-06-01|   15.23152|          |
t1     |2023-06-02|   16.23152|  17.23152|
t1     |2023-06-03|   19.23152|  18.23152|
t1     |2023-06-04|           |  20.23152|
t1     |2023-06-05|           |  43.46304|
t1     |2023-06-06|           |  15.23152|

 再对其使用 coale

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

globalcoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值