Oracle SQL会导致多个列
我有一个单列SQL查询,将输出放在多行中。例如:Oracle SQL会导致多个列,sql,oracle,Sql,Oracle,我有一个单列SQL查询,将输出放在多行中。例如: Select distinct academic_year from AFF_EVENT_V Order by academic_year; 其结果如下: 2002-2003 2003-2004 2004-2005 2005-2006 2006-2007 2007-2008 2008-2009 2009-2010 2010-2011 2011-2012 2012-2013 2013-2014 2014-2015 2015-2016 2016-2
Select distinct academic_year from AFF_EVENT_V
Order by academic_year;
其结果如下:
2002-2003
2003-2004
2004-2005
2005-2006
2006-2007
2007-2008
2008-2009
2009-2010
2010-2011
2011-2012
2012-2013
2013-2014
2014-2015
2015-2016
2016-2017
2017-2018
我希望结果显示在多个(比如说5个)“列”中。
我在寻找这样的结果:
2002-2003 2003-2004 2004-2005 2005-2006 2006-2007
2007-2008 2008-2009 2009-2010 2010-2011 2011-2012
etc.
如何构造查询以产生此输出?一种方法是条件聚合:
select max(case when mod(seqnum, 5) = 0 then academic_year end),
max(case when mod(seqnum, 5) = 1 then academic_year end),
max(case when mod(seqnum, 5) = 2 then academic_year end),
max(case when mod(seqnum, 5) = 3 then academic_year end),
max(case when mod(seqnum, 5) = 4 then academic_year end)
from (select academic_year, row_number() over (order by academic_year) - 1 as seqnum
from AFF_EVENT_V
group by academic_year
) a
group by floor(seqnum / 5);
一种方法是条件聚合:
select max(case when mod(seqnum, 5) = 0 then academic_year end),
max(case when mod(seqnum, 5) = 1 then academic_year end),
max(case when mod(seqnum, 5) = 2 then academic_year end),
max(case when mod(seqnum, 5) = 3 then academic_year end),
max(case when mod(seqnum, 5) = 4 then academic_year end)
from (select academic_year, row_number() over (order by academic_year) - 1 as seqnum
from AFF_EVENT_V
group by academic_year
) a
group by floor(seqnum / 5);
谢谢你,戈登。这正是我在sqldeveloper中寻找的答案。你对Oracle Apex了解多少吗?当我将您的建议作为报告的SQL时,我在Apex 5中得到一个错误:列名“MAX(CASEWHENMOD(SEQNUM,5)=0 ThenAcademic_YEAREND)”对于SQL查询无效。确保为列使用唯一的别名。只需为每个“MAX”值创建别名,例如“dummy”value_1、value_2、…、value_5Yup。我一按下按钮就意识到了这一点。:-)我只是在每行的最后一个括号后面加上了“C1”和“C2”。再次感谢。我很感激!谢谢你,戈登。这正是我在sqldeveloper中寻找的答案。你对Oracle Apex了解多少吗?当我将您的建议作为报告的SQL时,我在Apex 5中得到一个错误:列名“MAX(CASEWHENMOD(SEQNUM,5)=0 ThenAcademic_YEAREND)”对于SQL查询无效。确保为列使用唯一的别名。只需为每个“MAX”值创建别名,例如“dummy”value_1、value_2、…、value_5Yup。我一按下按钮就意识到了这一点。:-)我只是在每行的最后一个括号后面加上了“C1”和“C2”。再次感谢。我很感激!