SQL SERVER 按日期中年月格式统计数据,并显示每个年月,没有统计数量则为0
时间: 2024-10-22 13:11:46 浏览: 21
sqlserver/mysql按天、按小时、按分钟统计连续时间段数据【推荐】
4星 · 用户满意度95%
在SQL Server中,如果你想要按日期的年月格式统计数据,并显示每个月份哪怕没有数据也显示0,你可以使用`DATE_FORMAT`函数或者`PARTITION BY`语句配合`COALESCE`或`CASE`表达式来达到这个目的。这里是一个示例查询:
```sql
SELECT
DATE_FORMAT(your_date_column, '%Y-%m') AS [Year-Month],
COUNT(*) AS [Data_Count]
FROM
your_table_name
GROUP BY
DATE_FORMAT(your_date_column, '%Y-%m')
ORDER BY
[Year-Month];
-- 或者
WITH CTE_YearsMonths AS (
SELECT
YEAR(your_date_column) AS Year,
MONTH(your_date_column) AS Month
FROM
your_table_name
)
SELECT
CONCAT(YEAR(c.YM), '-', LPAD(MONTH(c.YM), 2, '0')) AS [Year-Month],
COUNT(t.*) AS [Data_Count]
FROM
CTE_YearsMonths c
LEFT JOIN
your_table_name t ON t.your_date_column = DATEFROMPARTS(c.Year, c.Month)
GROUP BY
c.Year, c.Month
ORDER BY
[Year-Month];
```
在这个查询中,我们首先获取表中的日期并转换为'YYYY-MM'格式,然后计算每个年月的记录数。如果某个月份没有数据,COUNT(*)将返回0。
阅读全文