2017-03-29 7 views
0

私は、カスタム名、時間単位の値(0-23)およびすべての読み取り値を格納するDBテーブルを持っています。私はSSRS - ユーザーオプションに基づいてデータを表示します。レポート:(時間/日/月/年/日/ピーク)

(&終了日開始)日付範囲に基づいて、テーブルから時間単位のデータを取得し、SSRSレポートを作成したレポートのデザインには、次のパラメーターました:

Start Date: 
End Date: 
Customer: Dropdown list that show all our active customers 
Report By: Dropdown list that show (Hour/Day/Month/Day Peak/Month Peak/Year Peak) 

エンドユーザーが日付範囲を選択する(&エンドを開始します)、カスタム名とReportby:月。私は、ユーザーが選択したオプション(報告者:)に基づいてレポートを表示することができるはずです。

私は、クエリの下にデータセットを作成したが、このクエリを持っている:

SELECT CustomerName, ReadingDate, IntegratedHour, IntegratedUsage, IntegratedGeneration 
FROM   DB.dbo.TableName 
WHERE  (DATEADD(HOUR, IntegratedHour, ReadingDate) BETWEEN DATEADD(HOUR, 0, @StartDate) AND DATEADD(HOUR, 23, @EndDate)) AND 
         (CustomerName = @FacilityName) 
ORDER BY ReadingDate, IntegratedHour 

このクエリは私に時間値を結果。

エンドユーザーの選択に基づいて、日/月/年別にレポートを表示するにはどうすればよいですか。フィルターを設定する場所や照会方法がわかりません。

誰かが私に助けてくれますか?あなたの助けやアドバイスを感謝します。ありがとう

答えて

0

あなたのDay Peak/Month Peak/Year Peakの定義が何であるか分かりませんが、これがうまくいけば助かります。

DECLARE @StartDate DATETIME = '2017-01-01' 
     , @EndDate DATETIME = '2017-12-02' 
     , @FacilityName VARCHAR(50) = 'Peter' 
     , @ReportBY VARCHAR(20) = 'Month' 

DECLARE @TestData TABLE (CustomerName VARCHAR(50),ReadingDate DATETIME,IntegratedHour INT,IntegratedUsage DECIMAL(15,2),IntegratedGeneration DECIMAL(15,2)) 
INSERT INTO @TestData 
SELECT 'Peter','2017-01-01',1,20,33 
INSERT INTO @TestData 
SELECT 'Peter','2017-01-01',2,21,33 
INSERT INTO @TestData 
SELECT 'Peter','2017-01-01',3,22,33 
INSERT INTO @TestData 
SELECT 'Peter','2017-02-01',3,22,33 


SELECT CustomerName 
    , CASE WHEN @ReportBY = 'Hour' THEN IntegratedHour 
       WHEN @ReportBY = 'Day' THEN ReadingDate 
       WHEN @ReportBY = 'Month' THEN MONTH(ReadingDate) 
       WHEN @ReportBY = 'Day Peak' THEN ReadingDate 
       WHEN @ReportBY = 'Month Peak' THEN ReadingDate 
       WHEN @ReportBY = 'Year Peak' THEN ReadingDate 
       ELSE ReadingDate END As DateType 
    , SUM(IntegratedUsage) 
    , SUM(IntegratedGeneration) 
FROM @TestData 
WHERE (DATEADD(hh, IntegratedHour, ReadingDate) BETWEEN DATEADD(hh, 0, @StartDate) AND DATEADD(hh, 23, @EndDate)) 
    AND (CustomerName = @FacilityName) 
GROUP BY CustomerName 
     , CASE WHEN @ReportBY = 'Hour' THEN IntegratedHour 
       WHEN @ReportBY = 'Day' THEN ReadingDate 
       WHEN @ReportBY = 'Month' THEN MONTH(ReadingDate) 
       WHEN @ReportBY = 'Day Peak' THEN ReadingDate 
       WHEN @ReportBY = 'Month Peak' THEN ReadingDate 
       WHEN @ReportBY = 'Year Peak' THEN ReadingDate 
       ELSE ReadingDate END 
+0

Snowlockk、ありがとうございました。感謝します。 SSRSレポートのドロップダウンリストから日付範囲、施設、時間/日/月/年/ ..を選択すると、次のようなレポートが生成されます。 日のピーク - 最高/選択した日の最大値。 IntegratedUsage、IntegratedGeneration。 MOnthピーク - IntegratedUsageからの最高値/最大値(各月のIntegratedGeneration) 年ピーク - IntegratedUsageからの最も高い(値)、その年のIntegratedGeneration。 – wed

+0

明確にするために、ReportByパラメータで、時間を時間、日を日として、月を月として指定するかどうかを指定しますか? – wed

+0

これを稼働させることはできませんでした。ありがとう。 – wed

関連する問題