Mysql查询case-when将列里面的值替换为别的值但是实际值不变

1、普通查询:

select register_state registerState,count(*) count from xxxx
where del_state=0 GROUP BY register_state;

查询结果如图:
这里写图片描述

2、特殊查询,根据某个字段的值,赋给它另一个相应的值

select register_state registerState,
(case register_state when -1 then '注册审核不通过' when 0 then '待审核' when 1 then '注册审核通过' end) registerStateReal,
count(*) count from xxxx
where del_state=0 GROUP BY register_state;

查询结果如图:
这里写图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想要将列转换为列,可以使用 MySQL 的 PIVOT 操作或者自定义查询语句实现。下面是两种方法的介绍: 1. 使用 PIVOT 操作 MySQL 并没有生的 PIVOT 操作,但是您可以使用 CASE WHEN 语句模拟它。例如,假设您有一个表格叫做 orders,其中包含了订单的信息,如下所示: | order_id | customer_id | order_date | order_amount | |----------|-------------|------------|--------------| | 1 | 100 | 2022-01-01 | 100 | | 2 | 100 | 2022-01-02 | 200 | | 3 | 200 | 2022-01-01 | 300 | | 4 | 200 | 2022-01-03 | 400 | 如果您想要将每个客户的订单金额分别作为一列进行显示,可以使用以下查询语句: ``` SELECT customer_id, SUM(CASE WHEN order_date = '2022-01-01' THEN order_amount END) AS '2022-01-01', SUM(CASE WHEN order_date = '2022-01-02' THEN order_amount END) AS '2022-01-02', SUM(CASE WHEN order_date = '2022-01-03' THEN order_amount END) AS '2022-01-03' FROM orders GROUP BY customer_id; ``` 这会将结果转换为以下形式: | customer_id | 2022-01-01 | 2022-01-02 | 2022-01-03 | |-------------|------------|------------|------------| | 100 | 100 | 200 | 0 | | 200 | 300 | 0 | 400 | 2. 使用自定义查询语句 另一种方法是使用自定义查询语句,使用 JOIN 操作将相同客户 ID 的订单金额连接起来,例如: ``` SELECT o1.customer_id, o1.order_amount AS '2022-01-01', o2.order_amount AS '2022-01-02', o3.order_amount AS '2022-01-03' FROM orders o1 LEFT JOIN orders o2 ON o1.customer_id = o2.customer_id AND o2.order_date = '2022-01-02' LEFT JOIN orders o3 ON o1.customer_id = o3.customer_id AND o3.order_date = '2022-01-03' WHERE o1.order_date = '2022-01-01'; ``` 这会将结果转换为以下形式: | customer_id | 2022-01-01 | 2022-01-02 | 2022-01-03 | |-------------|------------|------------|------------| | 100 | 100 | 200 | NULL | | 200 | 300 | NULL | 400 | 请注意,这里使用了 LEFT JOIN 操作,因为某些客户可能没有在某些日期下有订单。同时,由于使用了多个 JOIN 操作,这种方法在数据量较大的情况下可能会导致性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值