sqlserver 中max()函数的使用问题

2025-01-04 07:50:11
推荐回答(4个)
回答1:

因为你按照日期分组了!~ 如果你想去最大的日期像下面这样写就可以了!~
select max (OrderDate) as OrderDate
from dbo.Orders

你要取的是每个月最大值不是吗?所以你的SQL应该是没有问题的!~
20121112
20121013
20120914
像上面这组值 就是你这个SQL取出来的,每个月只有一条值!~

回答2:

max看名字就知道这是求最大的值的,那么在sql中我们是读取当前数据集一个字段中最大的一值的记录,下面看max语法。
最简单的语法
SELECT MAX(expression )
FROM tables
WHERE predicates;

实例
代码如下

SELECT MAX(salary) as "Highest salary"
FROM employees;

让它与 GROUP BY同时使用
代码如下

SELECT department, MAX(salary) as "Highest salary"
FROM employees
GROUP BY department;

问:我试图拉出一个表的一些信息。为了简化,假设表(report_history)有4列:
代码如下

USER_NAME,report_job_id,REPORT_NAME,report_run_date。

每一份报告,是在Oracle运行时,记录写入此表,注意到上述信息。我试图做的是拉从这个表中,当最后一次每一个不同的运行报告和谁跑,最后。
我的查询:
代码如下

SELECT report_name, max(report_run_date)
FROM report_history
GROUP BY report_name

但这样的结果是有问题的,下面看看正确的做法
代码如下

SELECT rh.user_name, rh.report_name, rh.report_run_date
FROM report_history rh,
(SELECT max(report_run_date) as maxdate, report_name
FROM report_history
GROUP BY report_name) maxresults
WHERE rh.report_name = maxresults.report_name
AND rh.report_run_date= maxresults.maxdate;
Let's take a few moments to explain what we've done.

方法二
代码如下

(SELECT max(report_run_date) as maxdate, report_name
FROM report_history
GROUP BY report_name) maxresults

回答3:

112时间格式为yyyymm,也就是用年月分组
然后取得每组中最大的时间

回答4:

group by convert(char(6),OrderDate,112) 是按年月分组,出来的当然是能查到的每个月的最后一天了