我想在这个查询中返回单行,但它返回两行什么是我的错误?

mspsb9vt  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(359)
SELECT (CASE WHEN DI.item_type = 'in_list' AND DI.item_method = 'item_category' AND DC.condition_method ='condition_time'  THEN 'TimeDiscount' ELSE 0 END) AS TimeDiscount, (CASE WHEN DI.item_type = 'in_list'  AND DI.item_method = 'item_category' AND DC.condition_method ='condition_date'  THEN 'DateDiscount' ELSE 0 END) AS DateDiscount
 FROM srampos_discount_item_list DIL JOIN srampos_discount_items DI ON DI.id = DIL.discount_item_id JOIN srampos_discounts D ON D.id = DI.discount_id JOIN srampos_discount_conditions DC ON D.id = DC.discount_id WHERE DIL.item_id =1

谢谢你的样品记录

TimeDiscount   ||  DateDiscount    

  TimeDiscount  || 0
     0          || DateDiscount

我要返回以删除0并合并到一行中
请帮我。。。

bq9c1y66

bq9c1y661#

您可以使用(假)聚合函数,例如:max()(最好使用null而不是0)

SELECT max(CASE
        WHEN DI.item_type = 'in_list' 
          AND DI.item_method = 'item_category' 
          AND DC.condition_method ='condition_time'  
        THEN 'TimeDiscount' 
      ELSE null END )AS TimeDiscount,
       max(CASE 
          WHEN DI.item_type = 'in_list'  
            AND DI.item_method = 'item_category' 
            AND DC.condition_method ='condition_date'  
          THEN 'DateDiscount' 
          ELSE null END) AS DateDiscount
  FROM srampos_discount_item_list DIL 
  JOIN srampos_discount_items DI ON DI.id = DIL.discount_item_id 
  JOIN srampos_discounts D ON D.id = DI.discount_id 
  JOIN srampos_discount_conditions DC ON D.id = DC.discount_id 
  WHERE DIL.item_id =1

相关问题