【问题标题】:Use a count function in a case statment在 case 语句中使用计数函数
【发布时间】:2021-08-26 17:22:54
【问题描述】:

我有下面的代码,我需要在 case 语句的一个条件中输入一个计数函数,然后按下面的 case 语句分组。但这并没有让我对案例陈述进行分组。我基本上想创建一个名为“Both”的第三个存储桶,条件如下

select  
CASE
  WHEN i.CLASSIFICATION in ('CUSTOMER','PARTNER') THEN 'API'
  WHEN i.CLASSIFICATION in ('MOBILE','NDSE') THEN 'APP' 
  WHEN (i.CLASSIFICATION in ('MOBILE','NDSE','CUSTOMER','PARTNER') OR count(distinct UPPER(p.ACCOUNTID)) >=2) THEN 'BOTH' 
  ELSE 'Other' END AS "Bucket", 
count(distinct ACCOUNTID) as No_Accounts,count(distinct envelopeid_hash) as numenvelopes
from ENVELOPE_TABLE e   
JOIN DIMDATE_TABLE b on to_date(e.sentinitial)=b.standarddate
join PAYING_TABLE p
on UPPER(e.ACCOUNTID)=UPPER(p.ACCOUNTID) 
LEFT JOIN IK_TABLE i ON i.IntegratorKeyId = e.InitiatingIntegratorKeyId AND i.SourceKey = e.SourceKey
group by 1

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql if-statement group-by count case


【解决方案1】:

你有第一列的表达式,'select'在group by之后执行,所以你得到一个错误。您需要在group by 中再次重复case when

select  
CASE
  WHEN i.CLASSIFICATION in ('CUSTOMER','PARTNER') THEN 'API'
  WHEN i.CLASSIFICATION in ('MOBILE','NDSE') THEN 'APP' 
  WHEN (i.CLASSIFICATION in ('MOBILE','NDSE','CUSTOMER','PARTNER') OR count(distinct UPPER(p.ACCOUNTID)) >=2) THEN 'BOTH' 
  ELSE 'Other' END AS "Bucket", 
count(distinct ACCOUNTID) as No_Accounts,count(distinct envelopeid_hash) as numenvelopes
from ENVELOPE_TABLE e   
JOIN DIMDATE_TABLE b on to_date(e.sentinitial)=b.standarddate
join PAYING_TABLE p
on UPPER(e.ACCOUNTID)=UPPER(p.ACCOUNTID) 
LEFT JOIN IK_TABLE i ON i.IntegratorKeyId = e.InitiatingIntegratorKeyId AND i.SourceKey = e.SourceKey
group by CASE
  WHEN i.CLASSIFICATION in ('CUSTOMER','PARTNER') THEN 'API'
  WHEN i.CLASSIFICATION in ('MOBILE','NDSE') THEN 'APP' 
  WHEN (i.CLASSIFICATION in ('MOBILE','NDSE','CUSTOMER','PARTNER') OR count(distinct UPPER(p.ACCOUNTID)) >=2) THEN 'BOTH' 
  ELSE 'Other' END AS "Bucket"

【讨论】:

    猜你喜欢
    • 2017-07-26
    • 2018-07-18
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2018-01-29
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多