上篇日志《ORACLE子句GROUP BY CUBE》中的问题稍作变化,现在每个字段有3个状态,SQL该如何写呢?这时CUBE的机制恐怕没有办法构成
上篇日志《Oracle子句GROUP BY CUBE》(见 )中的问题稍作变化,现在每个字段有3个状态,SQL该如何写呢?这时CUBE的机制恐怕没有办法构成3的八次方行数据了,只能另寻办法。以下代码是以3列为例的一个比较啰嗦的方案,仅供参考。
with base as
(select 0 as a1, 0 as a2, 0 as a3
from dual
union all
select 1 as a1, 0 as a2, 0 as a3
from dual
union all
select 9 as a1, 0 as a2, 0 as a3 from dual)
select b.a1,decode(c.le,1,0,2,1,3,9) as a2,decode(d.le,1,0,2,1,3,9) as a3
from base b,
(select level as le
from dual
connect by level
(select level as le
from dual
connect by level
order by a1,a2,a3
惭愧,,有点低级错误啦。修改后代码如下:
with base as
(select 0 as a1, 0 as a2, 0 as a3
from dual
union all
select 1 as a1, 0 as a2, 0 as a3
from dual
union all
select 9 as a1, 0 as a2, 0 as a3 from dual),
mult as
(select level as le
from dual
connect by level
select b.a1,
decode(m1.le, 1, 0, 2, 1, 3, 9) as a2,
decode(m2.le, 1, 0, 2, 1, 3, 9) as a3
from base b, mult m1, mult m2
order by a1, a2, a3

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号