【发布时间】:2021-10-02 10:44:12
【问题描述】:
我有一个 MySQL 查询。
SELECT
YEAR(Date) 'Year',
MONTH(Date)'Month',
SUM(Amount)'Amount'
FROM Bill.Statistics
LEFT JOIN Employees.Employee
ON Bill.Statistics.Employee = Employees.Employee.ID
WHERE Employees.Employee.Department LIKE '%%'
AND Bill.Statistics.Employee LIKE '%%'
AND Date>='2020-10-01' AND Date<='2021-03-31'
GROUP BY YEAR(Date),MONTH(Date)
WITH ROLLUP
这给了我一个结果。
| Year | Month | Amount |
|---|---|---|
| 2020 | 10 | 10.10 |
| 2020 | 11 | 11.11 |
| 2020 | 12 | 12.12 |
| 2020 | NULL | 33.33 |
| 2021 | 1 | 1.01 |
| 2021 | 2 | 2.02 |
| 2021 | 3 | 3.03 |
| 2021 | NULL | 6.06 |
| NULL | NULL | 39.39 |
现在,当我尝试使用 IFNULL() 来摆脱 NULL 并在此处放一个破折号时,我会通过以下代码得到以下结果。
SELECT
IFNULL(YEAR(Date), '-') AS 'Year',
IFNULL(MONTH(Date),'-') AS 'Month',
SUM(Amount)'Amount'
FROM Bill.Statistics
LEFT JOIN Employees.Employee
ON Bill.Statistics.Employee = Employees.Employee.ID
WHERE Employees.Employee.Department LIKE '%%'
AND Bill.Statistics.Employee LIKE '%%'
AND Date>='2020-10-01' AND Date<='2021-03-31'
GROUP BY YEAR(Date),MONTH(Date)
WITH ROLLUP
| Year | Month | Amount |
|---|---|---|
| 2020 | 10 | 10.10 |
| 2020 | 11 | 11.11 |
| 2020 | 12 | 12.12 |
| 2020 | 12 | 33.33 |
| 2021 | 1 | 1.01 |
| 2021 | 2 | 2.02 |
| 2021 | 3 | 3.03 |
| 2021 | 3 | 6.06 |
| 2021 | 3 | 39.39 |
就像你一样,它只是将前一个值的最后一个值复制到 NULL 所在的单元格中。
谁能告诉我为什么会这样? 我只是想让所有的 NULL 都变成简单的破折号。
【问题讨论】:
标签: mysql