2017-09-25 5 views
0

エンドユーザーがドロップダウンリストから選択するためのパラメータに月と年を表示したいとします。SQL Serverのパラメータの月と年のリストをドロップ

例えばSTARTDATEは、2017年6月である必要がありますし、終了日はこれは私が書いたクエリですgetdate()

からのみ月と年ですが、それは私のために働いていない

declare @start datetime = '6/1/2017' 
declare @end datetime = getdate() 

select 
    @start = dateadd(M, @start), 
    datename(M, @start) + ' ' + datename(Y, @start) 
where 
    @start < @end 
+0

このコードはどこですか? SSRSのどこかで? – SEarle1986

+0

このクエリからどのような出力が見えますか? –

+0

コードはSQL Serverにあります。私が見なければならなかった出力は月と年のドロップダウンリストです。たとえば、2017年6月、2017年7月、2017年8月... getdate()から最大の月と年。 – Chairbedding

答えて

0

多少の誤差があります。あなたのコードで:DATEADDの

  1. 文法、正しいdateadd(MONTH,1, @start)
  2. あなたはreturninされていますグラムエラーA SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.

は、私は以下のようになると思うこれらのコード

DECLARE @start DATETIME = '2017-01-01' 
DECLARE @end DATETIME = Getdate(); 

WITH ctealldates 
    AS (SELECT @start startdate 
       ,@end enddate 
     FROM (VALUES (1))G(n) 
     UNION ALL 
     SELECT Dateadd(month, 1, startdate) startdate 
       ,enddate 
     FROM ctealldates 
     WHERE startdate < enddate) 
SELECT Datename(month, startdate) + ' ' 
       + Datename(year, startdate) MonthName, year(startdate) * 100 + month(startdate) OrderBy 
FROM ctealldates 
ORDER BY 
    year(startdate) * 100 + month(startdate) 
OPTION (maxrecursion 0); 



MonthName              OrderBy 
------------------------------------------------------------- ----------- 
January 2017             201701 
February 2017             201702 
March 2017             201703 
April 2017             201704 
May 2017              201705 
June 2017              201706 
July 2017              201707 
August 2017             201708 
September 2017            201709 
+0

問題はありません。 Dateadd(day、1、startdate)startdateをDateadd(month、1、startdate)startdateに変更してください。これにより、パフォーマンスが向上し、不能なものが削除されます。 –

0

1ソリューションをお試しください。

  1. は、レポートRDLのためのパラメータを作成

    declare @start DATE = '2011-05-01' 
    declare @end DATE = getdate() 
    ;with months (date) 
    AS 
    (
        SELECT @start 
        UNION ALL 
        SELECT DATEADD(month,1,date) 
        from months 
        where DATEADD(month,1,date)<[email protected] 
    ) 
    select Datename(month,date) As Months, Datename(year, date) As Years, CONCAT(Datename(month,date), ' ', Datename(year, date)) As MonthandYear from months 
    
  2. 以下のようにストアドプロシージャを作成し、利用可能な値オプションのクエリから値を取得する選択します。

enter image description here は選択は、クエリ上からデータセットを作成し、値フィールドに「開始日」としてMonthandYearフィールドとラベルを選択します。

レポートを実行するときは、開始日と終了日との日付差のドロップダウン値とともに入力パラメータを受け取る必要があります。

これが役に立ちます。

+0

ご協力いただきありがとうございます。あなたの質問も正しいです。 – Chairbedding

関連する問題