0

四半期の月のSSRSレポートのハードコードされたデータセットを作成しようとしています。私はこれがあります。SSRSでハードコードされたデータセットを作成するときにエラーが発生する

SELECT CASE @Quarter 
    WHEN 'Q1' THEN (
    SELECT 'January' as months, '01' as month_number 
    UNION ALL 
    SELECT 'February','02' 
    UNION ALL 
    SELECT 'March', '03') 
    WHEN 'Q2' THEN (
    SELECT 'April' as months, '04' as month_number 
    UNION ALL 
    SELECT 'May','05' 
    UNION ALL 
    SELECT 'June', '06') 
    WHEN 'Q3' THEN (
    SELECT 'July' as months, '07' as month_number 
    UNION ALL 
    SELECT 'August','08' 
    UNION ALL 
    SELECT 'September', '09') 
    ELSE (
    SELECT 'October' as months, '10' as month_number 
    UNION ALL 
    SELECT 'November','11' 
    UNION ALL 
    SELECT 'December', '12') 
END 

をしかし、私はこのエラーを取得しています:

DECLARE @Months TABLE (months VARCHAR(9), month_start VARCHAR(2)); 

IF @Quarter = 'Q1' 
    INSERT INTO @Months VALUES ('January','01'), ('February','02'), ('March','03') 
ELSE IF @Quarter = 'Q2' 
    INSERT INTO @Months VALUES ('April','04'), ('May','05'), ('June','06') 
ELSE IF @Quarter = 'Q3' 
    INSERT INTO @Months VALUES ('July','07'), ('August','08'), ('September','09') 
ELSE 
    INSERT INTO @Months VALUES ('October','10'), ('November','11'), ('December','12') 

Select * FROM @Months 

しかし、私はエラーを取得:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

は、以前私は、テーブル変数を使用してみました

The Declare SQL construct or statement is not supported.

誰にもアイデアはありますか?私はそれをSSRSデータセット内でどのように動作させることができましたか?

答えて

1

おそらくこのようなものです。

Declare @Quarter varchar(2) = 'Q1' 

Select months,month_number From (Values 
('01','January','Q1'),('02','February','Q1'),('03','March','Q1'), 
('04','April','Q2'),('05','May','Q2'),('06','June','Q2'), 
('07','July','Q3'),('08','August','Q3'),('09','September','Q3'), 
('10','October','Q4'),('11','November','Q4'),('12','December','Q4') 
) N(month_number,months,Qtr) 
Where [email protected] 

戻り

Months Month_Number 
January 01 
February 02 
March 03 
+0

これはきれいです、ありがとうございます。 – devonuto

+0

ありがとう!私は、その中にデータを持つdbテーブルを作成せずにレポートをプロトタイプ作成する方法を探していました。あなたの方法は本当にうまくいく! – ripvlan

+0

@ripvlan幸せに助けてください:) –

0

すべての月と四半期とのCTEを作成してみてください。

WITH MONTHS AS (
SELECT 'January' as months, '01' as month_number, 'Q1' [quarter] 
UNION ALL 
SELECT 'February','02', 'Q1' 
UNION ALL 
SELECT 'March', '03', 'Q1' 
UNION ALL 
SELECT 'April' as months, '04' as month_number, 'Q2' 
UNION ALL 
SELECT 'May','05', 'Q2' 
UNION ALL 
SELECT 'June', '06', 'Q2' 
UNION ALL 
SELECT 'July' as months, '07' as month_number, 'Q3' 
UNION ALL 
SELECT 'August','08', 'Q3' 
UNION ALL 
SELECT 'September', '09', 'Q3' 
UNION ALL 
SELECT 'October' as months, '10' as month_number, 'Q4' 
UNION ALL 
SELECT 'November','11', 'Q4' 
UNION ALL 
SELECT 'December', '12', 'Q4') 
SELECT * FROM MONTHS 
WHERE [quarter] = @Quarter 

これが役立つかどうか教えてください。

関連する問題