2017-01-27 14 views
0

以下の関数を使用して、提出日とレポートの実行日との間のネットワーク日数を取得します。 同時に私はこれらの日付の間にチケットを取得するために私のSSRSの日付パラメータを使用しています、私の問題は私の日付のパラメータの終了日になるネットワーク日の終了日が必要です、私は方法がわからない何とかそれらを一緒にリンクし、この関数は私のSQL上で、日付パラメータは、私のSSRSにSSRSネットワーク/作業日(日付パラメータを使用)

alter function [dbo].[days_diff](
           @date1 datetime 
           ,@date2 datetime 
           ) 
returns int 
as 
    begin 
     declare @i int; 
     declare @count int; 
     declare @diff int; 
     set @diff = datediff(d,@date1,@date2); 
     set @i = 0; 
     set @count = 0; 
     while(@i < @diff) 
     begin 
      select @count = @count + 1 
      where datename(dw,dateadd(d,@i,@date1)) not in('Saturday' 
                  ,'Sunday' 
                 ); 
      set @i = @i + 1; 
     end; 
     return @count; 
    end; 
+0

少し曖昧です。おそらく、あなたは実際の日付と望ましい結果の例を与えることができます –

+0

ネットワークの日は何ですか? –

+0

@ Nick.McDermaid営業日です。私は彼らがExcelで利用可能な同じ名前の関数を参照していると思います。 – iamdave

答えて

0

であるあなたは、変数などのパラメータを参照することにより、データセットのSQLクエリにあなたのレポートからパラメータ値を渡すことができる特別なこと明示的に宣言しないでください。

たとえば、次のようにSQLスクリプトを持つことができますEndDateというレポートのパラメータを参照します

declare @FilterValue nvarchar(50) = 'Group1' 

select ProjectName 
     ,SubmissionDate 
     ,@ReportDate as ReportDate 
     ,dbo.days_diff(SubmissionDate, @ReportDate) as NetworkDays 
from ProjectSubmissions 
where FilterValue = @FilterValue 

その行くとで使用するためにReportDateと呼ばれるレポートパラメータを探しますSSRSのデータセットで使用する場合このクエリは、レポートデザインで必要なものすべてに設定できます。

+0

まあ、私のパラメータはenddateと呼ばれるので、上で述べたselectでこのパラメータを言及する必要があります。上に作成した変数を変更する必要がありますか? @FilterValueを宣言してください。nvarchar(50)= 'Group1' –

+0

@ MustafaEl-Gamal私の回答をもう一度読んでください。何が表示されているのかわからない場合は、SQLとSSRSに関する読んでください。 Per my answer * "明示的に宣言しない変数としてパラメータを参照することで、レポートのパラメータ値をデータセットのSQLクエリに渡すことができます。" * '@ FilterValue'は明示的に宣言され、値をとらないあなたのレポートから。一方、「@ ReportDate」は***明示的に宣言されていません... – iamdave

+0

私は申し訳ありませんが、まだ全然理解しようとしていますが、ありがとう –