Table
x
|C1 |C2 |C3 |
|------|----|-------|
|A |M |4000 |
|A |S |588998 |
|B |S |2 |
| | | |
Output as
|C1 |Total of C3|Flag set to true if C1 contains only S as Status|
|-----|-------- |------- |
|A |592998 |0 |
|B |2 |1 |
Thank you in Advance
Advertisement
Answer
Use conditional aggregation:
select c1, sum(c3),
min(case when c2 = 'S' then 1 else 0 end) as flag
from t
group by c1;
You can also express the condition as:
select c1, sum(c3),
(case when min(c2) = max(c2) and min(c2) = 'S' then 1 else 0 end) as flag
from t
group by c1;