我有多个具有以下结构的结果行
select data0, data1, ..., data30 from t0
union all select data0, ..., data30 from t1
...
有多个结果行,其中许多行需要 对齐到30的长度。所以我要遵循
union all select data0, data1, null, null, ..., null
是否有一种方便的方法可以自动执行这种操作 任务。我想要的是根据需要追加tail null。
我现在做什么
with nulls as (
select null as nul0, ..., null as nul30 from dual
)
我被困在这一点上。如何将此空值附加到 结果行?空列数是已知的。
请进行适当的编辑,我通过移动设备输入
答案 0 :(得分:2)
如何将此空值附加到结果行?
没有内置的解决方案可以生成任意数量的列的投影。
此解决方案将需要大量输入,但是您可以使用支持正则表达式搜索替换模式的文本编辑器将其半自动化。
with nulls as (
select cast(null as varchar2(10)) as nul0
, ...
, cast(null as varchar2(10)) as nul30
from dual
)
select t1.dat01
, t1.dat02
, nulls.nul03 as dat03
, nulls.nul04 as dat04
...
, nulls.nul30 as dat30
from t1
cross join nulls
union all
select t2.dat01
, t2.dat02
, t2.dat03
, nulls.nul04 as dat04
...
, nulls.nul30 as dat30
from t2
cross join nulls