2012-04-11 8 views
2

従業員が2つの日付の範囲で作業するために出席する人数を取得する必要があります。 2012-02-03Crystalレポートで日付の範囲を含むSQLクエリを適用する方法

SELECT A.EmployeeD, A.EmployeeName, ISNULL(SUM(CASE WHEN a.AttendanceDate BETWEEN '2012-02-03' AND '2012-03-03' THEN 1 ELSE 0 END), 0) AS AttendCount 
FROM  (SELECT  EmployeeID, EmployeeName, AttendanceDate 
         FROM   dbo.tblAttendance 
         GROUP BY EMPLOYEEID, EmployeeName, AttendanceDate 
     ) AS A 
GROUP BY EMPLOYEEID, EmployeeName 

2012-03-03にどのように私は、私は(C#の上で)Crystalレポートでそれを示すことができることを使用してください: 私はこの

元の日付範囲のようなクエリ得ることができましたか? 私は、ユーザーがプログラム内の日付範囲を変更できるようにしたいと考えています。

私は通常このようなことについてselect expert機能を使用しますが、これは私が知っている限りではこれが動作するとは思わないでしょう... 誰か助けてくれますか?事前のおかげで:)

+0

あなたは情報を得ることができますか? –

答えて

1

あなたがCRにカウントをオフロードすることができます...

  1. レポートにテーブル「tblAttendance」を追加レポートに2つのパラメータを作成し、{?開始日}と{ ?EndDate}には日付が入ります。
  2. 選択式に、{tblAttendance.AttendanceDate} in {?StartDate} to {?EndDate}のような行を追加します。この時点で、必要なすべてのデータが表示されます。表示と要約の問題です。
  3. {tblAttendance.EmployeeID}でグループ化し、GroupHeaderまたはGroupFooterにdistinctcount({tblAttendance.AttendanceDate},{tblAttendance.EmployeeID})の要約を配置します。これは、従業員によってグループ化された出席日のdistinctcount()を行うことを意味します。
  4. レポートに要約、従業員名、従業員IDを表示します。
+0

はい!これはまさに私が欲しいものです!どうもありがとう!申し訳ありませんが、私はあまりにも過度に興奮しています。あなたが私にこの解決策を与えていないのであれば、私はダイナミックなデータセットを使用していました。再度、感謝します。 –

関連する問題