所以我需要找到zCumuEnrolled的最大数量并仅返回一次值。这就是我到目前为止。
SELECT Distinct(MAX(zCumuEnrolled)) as total,
DateName(mm,zDate) as date,
DatePart(yyyy,zDate) as date2
FROM vRecruitment
Where zDate Between '2010-05-01' AND '2010-05-30'
GROUP BY zDate
当我这样做时,我得到:
total|Date|Date2
0| May|2010
1| May|2010
我真正想要的只是返回总数= 1的记录。任何建议都会非常感激!!!提前谢谢!
答案 0 :(得分:2)
您按完整日期分组,要获得正确的结果,您需要按月和年分组。 将所有日期设置为XXXX-XX-01格式,然后按此表达式分组。
dateadd(day, - datePart(day, zDate) + 1, zDate)
尝试下一个代码
SELECT
MAX(zCumuEnrolled) as total,
DateName(mm, d) as date1,
DatePart(yyyy, d) as date2
FROM
(select *, dateadd(day, - datePart(day, zDate) + 1, zDate) as d from vRecruitment) t
Where
zDate Between '2010-05-01' AND '2010-05-30'
GROUP BY
d
如果你想通过monthes获得最大值
,这种方法很有效答案 1 :(得分:1)
按zDate分组会导致结果为zDate的每个不同值创建记录;如果您想要在整个日期范围内获得最大值,请删除GROUP BY子句。 (为什么你需要Max才能与众不同?)
答案 2 :(得分:1)
Select Max(zCumuEnrolled) as Total From ZRecruitment
where zDate Between '2010-05-01' AND '2010-05-30'
如果我找到你,有点混乱的问题。如果您想要具有该最大值的记录的月份和年份,则必须澄清。
PS怎么能最大限度地计算......
答案 3 :(得分:0)
像这样:
SELECT zCumuEnrolled, zDate
FROM vRecruitment
Where zDate Between '2010-05-01' AND '2010-05-30'
AND zCumuEnrolled = (SELECT MAX(zCumuEnrolled) FROM vRecruitment)
这是你想要做的吗?