6

SQL で非常にうまく機能するクエリがあります。これを SSRS に取り込もうとすると、レポートで 4 つのパラメーターが要求されます。パラメータ/変数の 2 つは、実際には他の 2 つのパラメータに基づいています。

DECLARE @Q int       --SET @Q = 1 -- Quarter 
DECLARE @Year int    --SET @Year = 2013

DECLARE @STARTDATE varchar(10)
SELECT @STARTDATE = D FROM (
    select case @Q
        when 1 then '1/1/' + convert(varchar(10),@Year)
        when 2 then '4/1/' + convert(varchar(10),@Year)
        when 3 then '7/1/' + convert(varchar(10),@Year)
        when 4 then '10/1/' + convert(varchar(10),@Year)
    end as D
    ) sd

DECLARE @ENDDATE varchar(10)
SELECT @ENDDATE = D FROM (
    select case @Q
        when 1 then '3/31/' + convert(varchar(10),@Year)
        when 2 then '6/30/' + convert(varchar(10),@Year)
        when 3 then '9/30/' + convert(varchar(10),@Year)
        when 4 then '12/31/' + convert(varchar(10),@Year)
    end as D
    ) ed

--(ADDITIONAL SQL CONTINUES USING ALL 4 PARAMETERS) ...

@QSSRS が最初の 2 つのパラメーター ( , ) のみを要求し、クエリ内で計算されるのでand@Yearを無視するにはどうすればよいですか?@StartDate@EndDate

4

6 に答える 6

2

パラメータをレポートに保持しますが、デフォルト値を指定して非表示に設定します。

クエリが実行されると、コードは@STARTDATEとの@ENDDATE値をオーバーライドするため、デフォルトは問題になりません。

于 2013-04-09T19:52:24.063 に答える
2

クエリで宣言されていない、クエリ内の変数の SSRS データ セットのクエリにパラメーターが追加されます。

ただし、一度追加すると、常に自動的に削除されるとは限らないため、データセット クエリから手動で削除する必要がある場合があります。

たとえば、次のクエリは @ParamOne のパラメーターのみを作成します。

DECLARE @StartDate, @EndDate DATETIME

SET @StartDate = 'January 1, 2013'
SET @EndDate = 'February 1, 2013'

SELECT
   UserName,
   Action,
   DateOccurred
FROM
   myTable
WHERE
   DateOccurred BETWEEN @StartDate AND @EndDate
AND UserName = @ParamOne

ただし、SSRS は大文字の使用についてうるさい場合があります。宣言と変数の使用が一致していることを確認してください。

于 2013-04-09T19:03:39.287 に答える
-1

SSRSはクエリを作成し、すべての変数をパラメータに変換するため、それが可能だとは思いません.dynamicしたがって、AFAIKの唯一のオプションは、クエリをstored procedure

于 2013-04-09T18:54:31.950 に答える