动态计算列之间怎么优化

动态计算列之间如何优化?
比如一个视图,计算几个不同条件的数量和金额
select (case when 条件 = 1 then 数量 else 0 end) as 条件数量1,(case when 条件 = 1 then 数量 else 0 end) * 单价 as 条件金额1
……条件数量2,条件金额2
……条件数量3,条件金额3
from 表1


上面case块里的条件其实是一样的,就是统计某个条件的数量,和该数量乘以单价的的金额。我例子写的条件比较简单,实际业务判断更复杂些,一长溜的sql条件。如何优化这相同的case块内的代码呢?
------解决方案--------------------
把条件建一个表。

left join 一下,然后sum即可。

------解决方案--------------------
楼主将实际sql语句贴出来看看,最好有个测试环境(查询sql及想要的结果)