下选择工作时CLOSE_DATE
场IS NOT NULL
:选择计数“空”和“非空”
SELECT
YEAR (CLOSE_DATE) AS TheYear,
MONTH (CLOSE_DATE) AS TheMonth,
COUNT (*) AS cnt
FROM
Table1
WHERE
Table1.DEPT = 'SUPPORT'
GROUP BY
YEAR (CLOSE_DATE),
MONTH (CLOSE_DATE)
ORDER BY
TheYear DESC,
TheMonth DESC
输出是:
+-------------+------+
| Year | Month | cnt |
+-------------+------+
| 2014 | 4 | 10 |
| 2014 | 3 | 9 |
| 2014 | 2 | 15 |
| 2014 | 1 | 12 |
| 2013 | 12 | 10 |
| 2013 | 11 | 50 |
+--------------+-----+
如果CLOSE_DATE
有,例如,7行NULL
,结果将为:
+-------------+------+
| Year | Month | cnt |
+-------------+------+
| NULL | NULL | 7 |
| 2014 | 4 | 10 |
| 2014 | 3 | 9 |
| 2014 | 2 | 15 |
| 2014 | 1 | 12 |
| 2013 | 12 | 10 |
| 2013 | 11 | 50 |
+--------------+-----+
NULL
表明它应该算的实际年份和月份,所以预期的结果应该是:
+-------------+------+
| Year | Month | cnt |
+-------------+------+
| 2014 | 4 | 17 |
| 2014 | 3 | 9 |
| 2014 | 2 | 15 |
| 2014 | 1 | 12 |
| 2013 | 12 | 10 |
| 2013 | 11 | 50 |
+--------------+-----+
UPDATE
上面的例子只是一个更大的选择的一部分。我实际上计算了打开和关闭的情况。
如果票证没有close_date,则表示它已打开。所以,计数接近它应该算作公开。
的选择是一样的,用开柱:
SELECT
YEAR (OPEN_DATE) AS TheYear,
MONTH (OPEN_DATE) AS TheMonth,
COUNT (*) AS cnt
FROM
Table1
WHERE
Table1.DEPT = 'SUPPORT'
GROUP BY
YEAR (OPEN_DATE),
MONTH (OPEN_DATE)
ORDER BY
TheYear DESC,
TheMonth DESC
所以行YEAR (OPEN_DATE) AS TheYear,
和MONTH (OPEN_DATE) AS TheMonth,
带来的年份和月份从open_date
列,但如果close_date
列is null
它应该算在该行太。
这样,所有在close_date
中具有空值的行将被视为open_date
。
你有你的朋友吗? – AK47