我在选择SQL时遇到问题,我需要获取currentcount
和DateDebut
之间每天的列(DateFin
)的最大值,但是返回的结果显示了多个值。
我的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
,这就是为什么我需要将其强制转换为简单日期。
我也尝试使用“具有”功能,但仍然获得多个值
答案 0 :(得分:2)
您已经使用了GROUP BY
,distinct
毫无意义,因此可以删除distinct
。
然后,您只需修改CONVERT(Date,attemptdate)
而不是attemptdate
中的Group by
,只需修改group by CONVERT(Date,attemptdate)
select CONVERT(Date,attemptdate) as Date, max(currentcount) as MAXUSERS
from logintracking
where attemptdate between @dateDebut and @dateFin
and logintracking.clientaddr in ('10.118.254.21', '10.118.254.156')
group by CONVERT(Date,attemptdate)
注意:
您的@dateDebut
和@dateFin
已经是Date
类型。无需使用CONVERT
函数。