繁体   English   中英

使用聚合和并集所有时,我的SQL查询结果出现问题

[英]My SQL query result issue when using aggregate and union all

我在学生注册表上有以下查询,该表以student_id,first_name,enrollment_date(DATETIME)和price(Float)作为列,我的问题是,当我在MySQL上运行此查询时,我得到了“ BLOB”值查询第一部分的价格列(当有价格值时)以及查询的第二部分。

我想将结果提取到csv中,并且不希望Excel工作表中出现“ NULL”,因此我使用了IFNULL条件,这似乎是价格列上出现“ BLOB”值的原因。 如果我在price列上没有IFNULL,则得到的结果为price列设置了“ NULL”。

如果我将IFNULL(price,'')更改为IFNULL(price,0),那么事情也可以解决,但是当价格为null时,我人为地将price设置为'0',这是我不想做的...任何帮助?

   select 
      student_id AS AS `student_id`,
      first_name AS `first_name`,
      enrolment_date AS `enrolment_date`,
      IFNULL(price, '') AS `price`,
      IFNULL(price * 0.1, '') AS `gst`,
      IFNULL(price * 1.1, '') AS `price_ex_gst`
   from 
      student_enrolment
   where 
      student_id = 123 and 
      month(enrolment_date) = 10 
union all 
   select 
     student_id AS `student_id`,
     count(1) AS `count(1)`,
     'Total' AS `Total`,
     sum(`price`) AS `sum(price)`,    
     (sum(`price`) * 0.1) AS `gst`,
     (sum(`price`) * 1.1) AS `price_ex_gst`
   from 
      student_enrolment
   where 
      student_id = 123 and 
      month(enrolment_date) = 10 

我认为问题是数据类型。 将价格转换为字符串,然后使用ifnull()

  IFNULL(format(price, 4), '') AS `price`,
  IFNULL(format(price * 0.1, 4), '') AS `gst`,
  IFNULL(format(price * 1.1, 4), '') AS `price_ex_gst`

注意:我将使用coalesce()代替ifnull() ,因为为此目的, coalesce()是ANSI标准函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM