Teradata SQL MAX函数和重复行

时间:2017-06-13 21:10:12

标签: sql max teradata

我的原始报告返回帐户ABC的3条记录,1条具有已批准状态,2条具有暂停状态。这些行的唯一区别是状态和帐单编号。所有其他数据都是相同的。

我正在尝试创建此报告的变体,该变体将为帐户ABC返回1行,其中一列显示已批准帐户的计数,另一列显示已暂停帐户的计数。

在新报告中,会有一个值为1的Approved Accounts列和一个值为2的Suspended Accounts列。

我使用MAX函数只返回1行。我遇到的问题是2个暂停状态的记录除了结算号码外是相同的。

如果我从SQL中删除了结算号,那么结果只返回1个已暂停和1个已批准的帐户。我需要SQL在批准列中返回1行1,在挂起列中返回2

以下是一些示例数据:

Acct#    Bill#    Name    Location   Status  
ABC      Bill1    ABC Co   123456   Approved
ABC      Bill2    ABC Co   123456   Suspended
ABC      Bill3    ABC Co   123456   Suspended

任何建议都将不胜感激。谢谢你的帮助......

1 个答案:

答案 0 :(得分:2)

您需要“条件聚合”:

select Acct#, Name, Location, 
   sum(case when Status = 'Approved' then 1 else 0 end) as Approved,
   sum(case when Status = 'Suspended' then 1 else 0 end) as Suspended
from ...
group by 1,2,3