跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • MySQL CASE WHEN 语法如何并接子查询
未分類
26 11 月 2020

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

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

資深大佬 : cs5117155 3

    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)

  • 資深大佬 : c6h6benzene

    sum (case when force_status=1 then force_amount-amount else amount) group by sid

  • 資深大佬 : c6h6benzene

    (少了一个 end

  • 主 資深大佬 : cs5117155

    @c6h6benzene 还是不知道怎么写

  • 資深大佬 : c6h6benzene

    @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

    @c6h6benzene good,谢谢可以了,第一次写这个 case when 有点绕了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具