Cognos SQL WITH子句生成语法错误
我有一个在Cognos 11中运行的SQL查询,试图使用WITH子句,但由于WITH附近的语法不正确而不断收到错误。我以为我的组织管理员已经禁用了,但我已经向他们确认它已启用,我无法找出我的语法有什么问题。我在本机SQL和直通SQL中都尝试过这一点 我把它包在一个箱子里,在其他方面都很好:Cognos SQL WITH子句生成语法错误,sql,cognos,Sql,Cognos,我有一个在Cognos 11中运行的SQL查询,试图使用WITH子句,但由于WITH附近的语法不正确而不断收到错误。我以为我的组织管理员已经禁用了,但我已经向他们确认它已启用,我无法找出我的语法有什么问题。我在本机SQL和直通SQL中都尝试过这一点 我把它包在一个箱子里,在其他方面都很好: CASE WHEN SAPStreams.Stream_Type = 'INTELILINK' THEN ( WITH IntelilinkValues AS ( SELECT
CASE
WHEN SAPStreams.Stream_Type = 'INTELILINK' THEN (
WITH IntelilinkValues AS (
SELECT
LBD.Amount,
LBD.Payment_Frequency,
LBD.No_of_Periods
FROM _SYS_BIC.LeasingRebooksDetails LBD
WHERE LBD.Contract_Number='D003498006')
)
ELSE NULL END
非常直截了当,我更确信我的组织的Cognos实现有问题,而不是SQL有问题。希望能从这个社区得到一些帮助。我在Cognos DB中没有经验,但是这种查询在Standart SQL风格中是不合适的,因为您试图返回三个字段Amount、Payment\u Frequency、No\u of \u Periods作为一个字段TestWITH 不能在查询中放置公共表表达式。即使我纠正了您的CTE:
CASE
WHEN SAPStreams.Stream_Type = 'INTELILINK' THEN (
WITH IntelilinkValues (
Amount,
Frequency,
Periods
)
AS (
SELECT
LBD.Amount,
LBD.Payment_Frequency,
LBD.No_of_Periods
FROM _SYS_BIC.LeasingRebooksDetails LBD
WHERE LBD.Contract_Number='D003498006'
)
select Amount
from IntelilinkValues
)
ELSE NULL END
……还是不行
但这可能会奏效:
WITH IntelilinkValues (
Amount,
Frequency,
Periods
)
AS (
SELECT
LBD.Amount,
LBD.Payment_Frequency,
LBD.No_of_Periods
FROM _SYS_BIC.LeasingRebooksDetails LBD
WHERE LBD.Contract_Number='D003498006'
)
select Amount
into #ilv
from IntelilinkValues
select ss.somestuff,
CASE
WHEN SAPStreams.Stream_Type = 'INTELILINK' THEN (
select Amount
from #ilv
)
ELSE NULL END,
sot.someotherstuff
from SAPStreams ss
inner join someothertable sot on sot.id = ss.id
where somecondition = 'true'
drop table #ilv
将SQL语法更改为Pass-Through是的,你说得对-我本来没有这个,但我想可能它不喜欢这种情况,因为它没有指定字段名。抱歉,将进行编辑。第二:CASE运算符仅在SELECT子句中使用。如果您想返回逻辑表达式reslult的set i sdependence,那么您应该使用If BEGIN。。。第三个结尾:什么是SAPStreams.Stream_类型?您是否调用表的字段而不使用FROM运算符?如果从SAPStreams ORDER BY中选择Stream_Type,您应该阅读SQL基础知识。。。偏移量0行仅获取1下一行='INTELLINK'BEGIN END我知道大小写运算符仅在select语句中工作,这就是它所在的位置。这是一个巨大的疑问,我提供的部分是与讨论相关的唯一部分,因此我排除了其余部分。请添加详细解释。