我有一个问题,我需要根据不同列中的条件对美元进行分类汇总。例如,可以通过多种方式对客户进行分类,并且在类别中,唯一重要的是HIT。如果客户至少有一行包含HIT的行,即使没有特定行,也应始终将其归类为HIT(示例(第9行)。如您在我的数据集中看到的,客户A的行均都是HIT如果客户A至少有一个行是HIT,则所有美元都应归类为HITS美元;由于其他客户都没有HIT类别,因此他们所有的美元都将变成NOT。
CLIENT DOLLARS CATEGORY
A 12434 HIT
B 212 NONE
C 21 NONE
D 1231 NONE
B 784 NONE
A 43577 HIT
D 64 NONE
A 123 NONE
D 12 NONE
A 53 NONE
A 10 NONE
我正在尝试将其构建到CASE中。
SELECT CASE
WHEN category = 'HIT' THEN 'HITS'
WHEN category <> 'HIT' THEN 'NOT'
ELSE 'OTHER' END AS 'RESULT'
SUM(dollars) AS Dollars
FROM table 1
GROUP BY 'RESULT'
显然,当类别为NONE时,这不会为客户A收取HIT Dollars。任何帮助将不胜感激。
谢谢!
您可以通过列出命中客户的子查询将表加入表中:
select (case when (hits.client is null)
then 0
else 1
end) as hit,
sum(dollars) as Dollars
from t
left outer join ( select distinct client
from t
where category = 'HIT' ) hits
on t.client = hits.client
group by hit;
SQL提琴:http ://sqlfiddle.com/#!9/ 8d403e/7/0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句