0

Der Versuch, einen fest codierten Datensatz für einen SSRS-Bericht für Monate im Quartal zu schaffen. Ich habe dies:Fehler beim Erstellen des Datensatzes in hartcodierte 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 

Aber ich bin immer diese Fehlermeldung:

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

Früher habe ich versucht, eine Tabelle Variable:

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 

Aber ich den Fehler dann bekommen:

The Declare SQL construct or statement is not supported.

Hat auf irgendwelche Ideen jemand Wie könnte ich es in einem SSRS-Dataset arbeiten lassen?

Antwort

1

Vielleicht so etwas.

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] 

Returns

Months Month_Number 
January 01 
February 02 
March 03 
+0

Das ist nett, danke. – devonuto

+0

Danke! Ich suchte nach einer Möglichkeit, einen Bericht zu erstellen, ohne eine db-Tabelle mit Daten darin zu erstellen. Deine Methode funktioniert wirklich gut !! – ripvlan

+0

@ripvlan Glücklich zu helfen :) –

0

Versuchen Sie, einen CTE mit allen Monaten und Quartalen zu schaffen.

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 

Lassen Sie mich wissen, ob dies hilft.

Verwandte Themen