繁体   English   中英

SSRS 无法解析 SQL 查询

[英]SSRS cannot parse SQL query

我试图在我的 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、联合等。

当它抱怨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 ...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM