2017-06-12 4 views
0

月曜日から日曜日の範囲を選択するにはパラメータを追加する必要があります。私は、次のコードssrsデータセットは1行だけを表示します

DECLARE @W int 
SET @W = 0 
WHILE @W < 10 
BEGIN 

    SELECT 
    CONVERT(VARCHAR(25),DATEADD(wk, DATEDIFF(wk, 6, GETDATE() -7*@W), 0), 
    101)              +' - ' + CONVERT(
    VARCHAR(25),DATEADD(wk, DATEDIFF(wk, 6, GETDATE()   -7*@W), 6), 
    101) Dte, 
    CONVERT(DATE,DATEADD(WEEK,-1*@W,DATEADD(DAY , 1-DATEPART(WEEKDAY, 
    GETDATE()),GETDATE()))) "Sunday" 
    SET @W = @W +1 

END 

でデータセットを作ったと私は、このデータセットから使用可能な値を取得するには、パラメータを追加しましたが、それはちょうど最初の行2017年5月29日示してい - 2017年6月4日に。何が間違っているのですか?クエリから10行を取得するにはどうすればよいですか?

答えて

3

クエリは10個の結果セットを返し、SSRSは最初のクエリのみを使用します。私はあなたのクエリを修正する方法を先にスキップし、それを行う正しい方法にまっすぐに行くでしょう、あなたはループを全く必要としません。それはtable value constructorを使用してSQL Serverの10個の数字(0-9)のリストを生成するために、かなり簡単です:

SELECT 
     CONVERT(VARCHAR(25),DATEADD(wk, DATEDIFF(wk, 6, GETDATE())-7*t.Number, 0), 101) +' - ' + 
     CONVERT(VARCHAR(25),DATEADD(wk, DATEDIFF(wk, 6, GETDATE())-7*t.Number, 6),101) Dte, 
     CONVERT(DATE,DATEADD(WEEK,-1*t.Number,DATEADD(DAY , 1-DATEPART(WEEKDAY,GETDATE()),GETDATE()))) "Sunday" 
FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) AS t (Number); 

SELECT Number 
FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) AS t (Number); 

番号のこの表では、あなたの完全なデータセットを生成することができます

10行以上が必要な場合は、ループよりもずっと良い方法があります。

:さらなる読書のため、次のシリーズを参照してください。
関連する問題