【发布时间】:2019-02-08 14:19:24
【问题描述】:
我的 SQL 选择有问题,我需要在 DateDebut 和 DateFin 之间的每一天获取列 (currentcount) 的最大值,但返回的结果显示了多个值.
我的 SQL 语句:
DECLARE @dateDebut DATE,
@dateFin DATE,
@SITA_METIER VARCHAR(20),
@DEFSITE VARCHAR(20);
SET @dateDebut = '01/01/2017';
SET @dateFin = '31/12/2018';
SELECT DISTINCT
CONVERT(DATE, attemptdate) AS Date,
MAX(currentcount) AS MAXUSERS
FROM
logintracking
WHERE
attemptdate BETWEEN CONVERT(DATE, @dateDebut) AND CONVERT(DATE, @dateFin)
AND logintracking.clientaddr IN ('10.118.254.21', '10.118.254.156')
GROUP BY
attemptdate, currentcount
结果:
期望的结果:每天只有列 (currentcount) 的最大值
PS:attemptdate 类型是Timestamp,这就是为什么我需要将其转换为简单的日期。
我也尝试使用“有”功能,但仍然得到多个值
【问题讨论】:
-
您通常按您选择的列进行分组,除了那些作为设置函数的参数的列。 IE。试试
group by CONVERT(Date,attemptdate) -
我试过了,结果还是一样
-
添加示例表数据和预期结果 - 作为格式化文本,而不是图像。
-
如果你使用 jarlh 的
GROUP BY子句,你不能得到重复的天数。GROUP BY子句中可能还有currentcount。
标签: sql sql-server sql-server-2008 select where-clause