2017-06-13 124 views
0

我的原始报告为帐户ABC返回3条记录,1为批准状态,2为暂停状态。这些行中唯一的区别是状态和开票号码。所有其他数据是相同的。Teradata SQL MAX函数和重复行

我正在尝试创建此报表的一个变体,它将为帐户ABC返回1行,该列显示已核准帐户的计数以及另一列的已暂停帐户的计数。

在新的报告中,就为1的值,并用2

我使用MAX函数返回仅1行的值已暂停的帐户列经批准的帐户列。我遇到的问题是,除了帐单号码之外,具有暂停状态的2条记录是相同的。

如果我从SQL中删除开票号码,那么结果只返回1个已暂停和1个已批准的帐户。我需要的SQL在暂停列

这里用1核准列和2返回1行是一些示例数据:

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

任何建议,将不胜感激。感谢您的帮助.....

回答

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 
+0

感谢。这对我有用........ – Shaves