2

我正在努力通过 ODBC 对 OpenEdge 数据库执行 if 语句。我的查询就像一个魅力,但 Progress 希望我定义不同的 if 语句,我不知道。有没有人可以为我定义正确的查询?

    IF            
    {Crediteur code|type=string} = 'HOEFASTE'
 BEGIN       
    (SELECT
        inok."vest-kd-arvo"+RTRIM('-') + RIGHT(CAST((inok."inok-nr" + 1000000) AS varchar(7)),6) AS inokvalue
        ,RTRIM("leso-kd")+RTRIM('-')+inok."vest-kd-arvo"+RTRIM('-')+CAST("inok-nr"AS varchar(6)) AS inokdisplay
        ,RIGHT(CAST((inok."inok-nr") AS varchar(7)),6) + '-' + inok."vest-kd-arvo" + '-' + RTRIM("leso-kd") AS inoknr
        ,RTRIM("leso-kd") AS soortfact
    FROM
        PUB.inok
    WHERE
        inok."vcdc-nr" = {Administratie|type=int32}
        AND inok."inss-kd" NOT IN ('H','G')
    )
ELSE        
    (SELECT   
        inok."vest-kd-arvo"+RTRIM('-') + RIGHT(CAST((inok."inok-nr" + 1000000) AS varchar(7)),6) AS inokvalue
        ,RTRIM("leso-kd")+RTRIM('-')+inok."vest-kd-arvo"+RTRIM('-')+CAST("inok-nr"AS varchar(6)) AS inokdisplay
        ,RIGHT(CAST((inok."inok-nr") AS varchar(7)),6) + '-' + inok."vest-kd-arvo" + '-' + RTRIM("leso-kd") AS inoknr
        ,RTRIM("leso-kd") AS soortfact
    FROM
        PUB.inok
    WHERE
        inok."rela-kd-kre" = {Crediteur code|type=string}
        AND inok."vcdc-nr" = {Administratie|type=int32}
        AND inok."inss-kd" NOT IN ('H','G')
     )
END
4

1 回答 1

1

如果我理解正确,只有你的WHERE-clause 是不同的,基于“Crediteur code”。

您可以将 IF 移动到 -WHERE子句内。这将给你留下一个单一的SELECT陈述。这种替代方案对您有用吗?

SELECT   
    inok."vest-kd-arvo"+RTRIM('-') + RIGHT(CAST((inok."inok-nr" + 1000000) AS varchar(7)),6) AS inokvalue
    ,RTRIM("leso-kd")+RTRIM('-')+inok."vest-kd-arvo"+RTRIM('-')+CAST("inok-nr"AS varchar(6)) AS inokdisplay
    ,RIGHT(CAST((inok."inok-nr") AS varchar(7)),6) + '-' + inok."vest-kd-arvo" + '-' + RTRIM("leso-kd") AS inoknr
    ,RTRIM("leso-kd") AS soortfact
FROM
    PUB.inok
WHERE
    inok."rela-kd-kre" = (CASE WHEN {Crediteur code|type=string} = 'HOEFASTE' THEN inok."rela-kd-kre" ELSE {Crediteur code|type=string} END)
    AND inok."vcdc-nr" = {Administratie|type=int32}
    AND inok."inss-kd" NOT IN ('H','G')
于 2013-01-15T12:17:18.920 回答