0

したがって、zCumuEnrolledの最大数を見つけて、値を1回だけ返す必要があります。これは私がこれまでに持っているものです。

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

私が本当に望んでいるのは、total=1のレコードを返すことだけです。アドバイスをいただければ幸いです。前もって感謝します!

4

4 に答える 4

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

これは、月ごとに最大値を取得したい場合にうまく機能します

于 2012-04-30T20:12:32.333 に答える
1

zDateでグループ化すると、結果にはzDateの個別の値ごとにレコードが含まれます。日付の全範囲で最大値が必要な場合は、GROUPBY句を削除してください。(そして、なぜMaxを区別する必要があるのですか?)

于 2012-04-30T16:52:13.053 に答える
1
Select Max(zCumuEnrolled) as Total From ZRecruitment 
where zDate Between '2010-05-01' AND '2010-05-30'

私があなたを得るならば、いくぶん紛らわしい質問。その最大値を持つレコードの月と年が必要な場合は、明確にする必要があります。

PSどのように最大値を合計にすることができますか...

于 2012-04-30T16:54:36.497 に答える
0

このような:

SELECT zCumuEnrolled, zDate
FROM vRecruitment  
Where zDate Between '2010-05-01' AND '2010-05-30' 
    AND zCumuEnrolled = (SELECT MAX(zCumuEnrolled) FROM vRecruitment)

これはあなたが探していたものですか?

于 2012-04-30T16:56:27.717 に答える