【问题标题】:Error creating hardcoded dataset in SSRS在 SSRS 中创建硬编码数据集时出错
【发布时间】:2016-10-28 02:55:45
【问题描述】:

尝试为本季度几个月的 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

但是我收到了这个错误:

选择列表中只能指定一个表达式,当 EXISTS 没有引入子查询。

之前我尝试过使用表变量:

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

然后我得到错误:

不支持 Declare SQL 构造或语句。

有没有人知道如何让它在 SSRS 数据集中工作?

【问题讨论】:

    标签: sql-server reporting-services sql-server-2012 ssrs-2012


    【解决方案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 Qtr=@Quarter
    

    返回

    Months   Month_Number
    January  01
    February 02
    March    03
    

    【讨论】:

    • 谢谢!我正在寻找一种无需创建包含数据的 db 表即可对报告进行原型制作的方法。你的方法效果很好!!
    • @ripvlan 乐于助人:)
    【解决方案2】:

    尝试创建包含所有月份和季度的 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
    

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2017-05-02
      • 2021-01-02
      相关资源
      最近更新 更多