请问这个SQL怎么写

毕设导航 毕业设计 1

表A:

表B:

表A中的planNumber是唯一的,表B的planNumber不是唯一,与表A相关联;

我现在想通过他们的planNumber关联关系,使表B里面相同的planNumber编号的qty相加,然后与表A的totalQty进行对比;

让我在前端选择的时候获得相对应的数据; 比如“未下单”,就是qty的和值=0的数据 “部分下单”就是qty的和值<totalQty的数据 “全部下单”就是qty的和值=totalQty的数据

回复

共3条回复 我来回复
  • 毕业设计货栈
    这个人很懒,什么都没有留下~
    评论
    SELECT a.planNumber planNumber,a.totalQty totalQty, b.qtys  qtys
    from 表 A a
    LEFT JOIN (SELECT planNumber, sum(qty) qtys  FROM 表B GROUP BY planNumber) b on a.planNumber = b.planNumber
    having 1=1
        --- 如果是postgres 数据库 将别名修改为字段名  比如 将qtys -> b.qtys totalQty -> a.totalQty
    <if test="未下单">
       and qtys ==0
    </if>
    <if test="部分下单">
        and qtys < totalQty
    </if>
    <if test="全部下单">
        and  qtys == totalQty
    </if>
    
    0条评论
  • 代码工厂
    这个人很懒,什么都没有留下~
    评论
    select a.planNumber,a.totalqty,c.qty,
    case when c.qty=0 then '未下单'
    when qty<totalqty then '部分下单'
    when qty=totalqty  then '全部下单'
    else '未知' end 
     from a 
    left join 
    (select b.planNumber,sum(b.qty) qty from sale_order b where b.planNumber <> '' GROUP BY b.planNumber) c
    on a.planNumber=c.planNumber
    
    0条评论
  • 源码导航
    这个人很懒,什么都没有留下~
    评论
    select 
    CASE
        WHEN  a.totalQty-b.totalQty=0 THEN '全部下单'
        WHEN  a.totalQty-b.totalQty>0 THEN '部分下单'
        ELSE
            '未下单'
    END status
    from 表A a left join
    (select planNumber,sum(b.qty) totalQty from sale_order GROUP BY planNumber) b on a.planNumber=b.planNumber
    
    0条评论

发表回复

登录后才能评论