sql查询显示当前月的列数的数值。

qq_30523819 2023-06-18 16:47:25

某营业额表,存了好几年的数据, 现在问题是如下两点

1、如果是本年: 显示一月至当前月份各部门每月营业额列, 现在是6月那么就显示各部门今年1-6月每月营业额。

2、如果是往年:就显示往年1-12月每月营业额。

不知道如何写代码可以实现。时间条件不难,主要是是否显示此月份的列不知道如何判断。

sql server的数据库。

 

 

 

...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoftwareTeacher 06-18
精选
  • 打赏
  • 举报
回复 1

@CSDN-Ada助手可以请你写出在 mysql 环境的具体语句么?

  • 举报
回复
@SoftwareTeacher 当然可以,以下是在 MySQL 环境下实现您提出的问题的 SQL 语句: 1. 显示本年各部门每月营业额: ``` SELECT YEAR(sales_date) AS year, MONTH(sales_date) AS month, department, SUM(sales_amount) AS sales FROM sales_table WHERE YEAR(sales_date) = YEAR(CURRENT_DATE) AND MONTH(sales_date) <= MONTH(CURRENT_DATE) GROUP BY YEAR(sales_date), MONTH(sales_date), department; ``` 2. 显示往年各部门每月营业额: ``` SELECT YEAR(sales_date) AS year, MONTH(sales_date) AS month, department, SUM(sales_amount) AS sales FROM sales_table WHERE YEAR(sales_date) < YEAR(CURRENT_DATE) GROUP BY YEAR(sales_date), MONTH(sales_date), department; ``` 以上代码中,`sales_table` 是存放营业额数据的表名,`sales_date` 是销售日期字段的名称,`department` 是部门名称字段的名称,`sales_amount` 是销售额字段的名称。
  • 打赏
  • 举报
回复

感谢大家的回复,但是不是我要的那个效果,不是显示sum值。 而是显示分月的数值 1月,2月,3月,每个月各多少。而且关键点在于往年的就显示12列, 今年的就显示到今年的月份列数。

img

  • 打赏
  • 举报
回复

@CSDN-Ada助手可以请你写出具体的 sql 语句么?

  • 举报
回复
@SoftwareTeacher 可以的,请问您使用的是哪种数据库?不同数据库的 SQL 语法略有不同。
  • 举报
回复
@CSDN-Ada助手 mysql 数据库
  • 举报
回复
@SoftwareTeacher 可以使用以下 SQL 语句实现你的需求: ```sql -- 本年数据 SELECT dept, IF(MONTH(date) <= MONTH(CURRENT_DATE()), CONCAT(YEAR(date), '-', MONTH(date)), NULL) AS month, SUM(amount) AS sales FROM sales_table WHERE YEAR(date) = YEAR(CURRENT_DATE()) GROUP BY dept, month; -- 往年数据 SELECT dept, CONCAT(YEAR(date), '-', MONTH(date)) AS month, SUM(amount) AS sales FROM sales_table WHERE YEAR(date) < YEAR(CURRENT_DATE()) GROUP BY dept, month; ``` 这两条 SQL 语句分别对应了你所需要查询的本年数据和往年数据。其中用到了 MySQL 的一些函数,包括 `YEAR`、`MONTH` 和 `CURRENT_DATE`。 第一条 SQL 语句中,我们使用了 `IF` 函数来判断当前月份是否超过了查询时间点的月份,如果超过了就返回 `NULL`,否则返回 `YEAR-MONTH` 的格式。 第二条 SQL 语句中,我们直接使用了 `YEAR` 和 `MONTH` 函数来获取年份和月份,并将它们拼接成 `YEAR-MONTH` 的格式。 需要注意的是,这里的 `sales_table` 是你所存储营业额数据的表名,你需要根据实际情况进行替换。

34,499

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧