Cognos SQL WITH子句生成语法错误

时间:2019-02-07 20:33:03

标签: sql cognos

我有一个SQL查询,我正在Cognos 11中运行,并试图使用WITH子句,但由于“ WITH”附近的语法错误而不断出现错误。我以为我的组织管理员已禁用WITH,但是我已经与他们确认已启用WITH,但我无法弄清楚我的语法出了什么问题。我已经在本机SQL和直通SQL中进行了尝试。

我把它包装在一个可以正常工作的情况下:

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错误。希望这个社区提供一些帮助。

3 个答案:

答案 0 :(得分:0)

我在Cognos DB中没有经验,但是这种查询在Standart SQL风格中是不合适的,因为您尝试将三个字段(金额,Payment_Frequency,No_of_Periods)返回为一个字段(TestWITH)!!!

答案 1 :(得分:0)

您不能在查询中放入公用表表达式。即使我更正了您的CTE:

public function query($query, $resultmode = MYSQLI_STORE_RESULT) {

...它仍然不起作用。

但这可能有用:

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

答案 2 :(得分:-1)

将SQL语法更改为“通过”