首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套案例查询Db2

嵌套案例查询Db2
EN

Stack Overflow用户
提问于 2022-05-17 07:05:12
回答 2查看 78关注 0票数 0

我试图在DB2中创建一个嵌套的case语句。这让我犯了个错误。

代码语言:javascript
复制
select tmp.claim_number,
       SUM(tmp.LUMP_SUM_E) as LUMP_SUM_E
  from (
select c.claim_number,
       p.amount,
       p.effective_gross_amt,
       --p.lump_sum_e,
       p.released,
       p.to,
       p.payment_option,
       p.sub_benefit_type,
       p.PAYMENT_FIELD,
       CASE WHEN ((EXTRACT(YEAR FROM p.to) < EXTRACT(YEAR FROM p.released)) 
       THEN
          CASE WHEN (p.to <= '2020-07-01' and p.amount > 0)
          THEN amount ELSE 0 
          END  
       END AS lump_sum_e   
from CLAIMS.claim c inner join claims.payment p on c.id = p.claim_id and c.claim_Number IN (75248)
AND (
      (p.RELEASED >= '2020-07-01' AND p.RELEASED <= '2021-06-30') 
   OR 
      (p.ATO_RELEASE_DATE >= '2020-07-01' AND p.ATO_RELEASE_DATE <= '2021-06-30')
    )
  ) tmp
GROUP by tmp.claim_number;

它在扔

代码语言:javascript
复制
1) [Code: -104, SQL State: 42601]  An unexpected token "THEN" was found following "FROM p.released))  
".  Expected tokens may include:  ")".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.22.29
2) [Code: -727, SQL State: 56098]  An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-104", SQLSTATE "42601" and message tokens "THEN|FROM p.released))  
|)".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.22.29

请知道如何用Db2编写嵌套的case语句吗?

问候,R

EN

回答 2

Stack Overflow用户

发布于 2022-05-17 08:05:29

您需要修复查询语法。

代码语言:javascript
复制
select tmp.claim_number,
       SUM(tmp.LUMP_SUM_E) as LUMP_SUM_E
  from (select c.claim_number,
               p.amount,
               p.effective_gross_amt,
               --p.lump_sum_e,
               p.released,
               p.to,
               p.payment_option,
               p.sub_benefit_type,
               p.PAYMENT_FIELD,
               CASE WHEN (EXTRACT(YEAR FROM p.to) < EXTRACT(YEAR FROM p.released)) 
                         THEN
                             CASE WHEN (p.to <= '2020-07-01' and p.amount > 0)
                                       THEN amount ELSE 0 
                             END  
               END AS lump_sum_e   
          from CLAIMS.claim c 
         inner join claims.payment p on c.id = p.claim_id 
                                    and c.claim_Number IN (75248)
                                    AND (
                                         (p.RELEASED >= '2020-07-01'
                                          AND p.RELEASED <= '2021-06-30') 
                                         OR 
                                         (p.ATO_RELEASE_DATE >= '2020-07-01'
                                          AND p.ATO_RELEASE_DATE <= '2021-06-30')
                                        )
      ) tmp
GROUP by tmp.claim_number;
票数 1
EN

Stack Overflow用户

发布于 2022-05-17 07:43:09

考虑在内部大小写表达式周围使用显式括号。还要确保()是同步的。基于案例陈述的语法,它应该能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72269520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档