【问题标题】:SSRS cannot parse SQL querySSRS 无法解析 SQL 查询
【发布时间】:2021-04-06 06:32:34
【问题描述】:

我正在尝试在我的 SSRS 报告中定义一个 SQL 查询,但我遇到了一些语法错误:

Error in SELECT clause: expression near 'WHEN'.
Missing FROM clause.
Error in SELECT clause: expression near ','.
Unable to parse query text.

查询并没有那么复杂,而是有点复杂,但我会尝试至少在这里传达它的结构:

select 

(CASE WHEN columnA1 is null THEN columnA2 ELSE columnA1 END) as columnA,
(CASE WHEN columnB1 is null THEN columnB2 ELSE columnB1 END) as "custom_name_for_columnB"

from
(

(select a.columnA1, ... 
from myTable a, ...
// join conditions
)

union

select * from 
(select a.columnA1, ...
from myTable a, ...
// join conditions
order by someColumn) source
)
);

我认为查询的作用并不重要,因为我在我的 DMBS 中成功运行了它,所以我很确定它是正确的 SQL 语法(我正在研究 Oracle DB)。我认为我没有看到一些特定于 SSRS 的语法。我对它完全陌生,所以我不知道它是否支持整个 SQL 语法,如 CASE WHEN、联合等。

【问题讨论】:

  • 删除 SELECT 主子句末尾的逗号 (,)。
  • @PM77-1 错字,查询中没有
  • 如何将“custom_name_for_columnB”替换为 [custom_name_for_columnB]

标签: sql oracle plsql reporting-services toad


【解决方案1】:

如果我做了太多更改,请更正我的查询,但我认为有几处错误:

SELECT (CASE WHEN t.columnA1 IS NULL THEN t.columnA2 ELSE t.columnA1 END) as columnA,
       (CASE WHEN t.columnB1 IS NULL THEN t.columnB2 ELSE t.columnB1 END) as [custom_name_for_columnB]
FROM(
     SELECT a.columnA1, ... 
     FROM myTable a, ...
     JOIN conditions

     UNION

     SELECT * FROM
     (
        SELECT a.columnA1, ...
        FROM m myTable a, ...
        JOIN conditions
        --ORDER BY someColumn --Can't have ORDER BY in subquery without TOP(n) / FOR XML.
     ) source
)t; --Needs an alias

【讨论】:

    【解决方案2】:

    由于它抱怨CASE(好像它不识别语法),请尝试更多选项:

    COALESCE:

    select coalesce(columnA1, columnA2) columnA,
           coalesce(columnB1, columnB2) columnB
    from ...
    

    NVL:

    select nvl(columnA1, columnA2) columnA,
           nvl(columnB1, columnB2) columnB
    from ...
    

    DECODE:

    select decode(columnA1, null, columnA2, columnA1) columnA,
           decode(columnB1, null, columnB2, columnB1) columnB
    from ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多