Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 附加“;尾部”;选择多个选项_Sql_Oracle - Fatal编程技术网

Sql 附加“;尾部”;选择多个选项

Sql 附加“;尾部”;选择多个选项,sql,oracle,Sql,Oracle,我有多个具有以下结构的结果行 select data0, data1, ..., data30 from t0 union all select data0, ..., data30 from t1 ... 有多个结果行,其中许多需要 要对齐到30的长度。所以我要做以下的事情 union all select data0, data1, null, null, ..., null 有没有一种方便的方法来自动完成这类工作 任务我想要的是根据需要附加尾部null 我现在做什么 with

我有多个具有以下结构的结果行

 select data0, data1, ..., data30 from t0
 union all select data0, ..., data30 from t1
 ...
有多个结果行,其中许多需要 要对齐到30的长度。所以我要做以下的事情

 union all select data0, data1, null, null, ..., null
有没有一种方便的方法来自动完成这类工作 任务我想要的是根据需要附加尾部null

我现在做什么

 with nulls as (
  select null as nul0, ..., null as nul30 from dual
 )
我被困在这一点上。如何将此空值附加到 结果行?已知空列数

请酌情编辑,我从手机输入

如何将此空值附加到结果行

没有用于生成任意数量列的投影的内置解决方案

这个解决方案需要相当多的输入,但是您可以通过使用支持regex搜索“n”替换模式的文本编辑器来半自动化它

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

你的dbms名称是什么?做交叉连接(而不是合并)Oracle是dbms名称我应该澄清一个问题
选择0,1,2,3,4,5
好吧,我打错了我的问题,以为有人会理解我匆忙打出来的想法。关键是,我需要附加一个结果以与一定数量的列对齐。在其他情况下,交叉连接会有一定的作用,但我的结果行具有不同数量的空值,我附加了空值。第二,我认为它应该使用交叉连接方式,但我仍然必须键入那些带有大量空值的CTE。这可能是一个解决方案。据我所知,作为新手,使用这种语法不会因为交叉连接而产生多行。不过还是有很多打字。我得检查一下语法,这对我来说是新的。谢谢你的回复,我得检查一下。过段时间会回来的。