› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
cs5117155
V2EX  ›  MySQL

MySQL CASE WHEN 语法如何并接子查询

  •  
  •   cs5117155 · Dec 5, 2020 · 3175 views
    This topic created in 2121 days ago, the information mentioned may be changed or developed.
        select amount,sid,
    	CASE 
    	WHEN force_status=1 THEN  select sum(amount) as amount,sid  FROM(select amount-force_amount as amount,sid from lease_order WHERE force_status=1 and `sid` IN (7,19)) as temp GROUP BY sid
      else 0 end as amount 
        from order;
    

    我有一个表order,当字段force_status=1时则使用force_amount-amount差额进行累加,并对sid进行分组统计,当字段force_status!=1,则使用amount统计并sid分组。 如果我单独执行

    select sum(amount) as amount,sid  FROM(select amount-force_amount as amount,sid from order WHERE force_status=1 and `sid` IN (7,19)) as temp GROUP BY sid
    

    则没有问题,会显示如下信息

    amount	sid
    1.04	7
    0.03	19
    

    当使用CASE WHEN则报错,望大神能帮我抽空看看是哪里出问题了。最终效果需要实现成

    amount	sid
    2.03	8
    0.03	19
    8.03	31
    9.13	20
    

    这样效果

    5 replies  •  2020-12-05 14:22:15 +08:00
    c6h6benzene
        1
    c6h6benzene  
       Dec 5, 2020
    sum (case when force_status=1 then force_amount-amount else amount) group by sid
    c6h6benzene
        2
    c6h6benzene  
       Dec 5, 2020
    (少了一个 end😅)
    cs5117155
        3
    cs5117155  
    OP
       Dec 5, 2020
    @c6h6benzene 还是不知道怎么写😅,能把 CASE WHEN 也加上,写个详细的吗
    c6h6benzene
        4
    c6h6benzene  
       Dec 5, 2020 via iPhone
    @cs5117155 #3 就…其实不需要子查询。case when 可以写在 sum 里面的。

    select sid, sum(case when force_status=1 then force_amount-amout else amount end) from order group by sid
    cs5117155
        5
    cs5117155  
    OP
       Dec 5, 2020
    @c6h6benzene good,谢谢可以了,第一次写这个 case when 有点绕了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2966 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:03 · PVG 08:03 · LAX 17:03 · JFK 20:03
    ♥ Do have faith in what you're doing.