[英]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.