如何在SQL中的指定位置插入空行?

时间:2016-06-14 21:14:11

标签: sql

我在看过去12个月。每个月在数据集中5次,每个段一次。每一行(Segment,yearmonth)也有“调用”。所以每一行看起来像

Segment   YearMonth    Calls
1           201505       20

但是,该细分受众群只在第一个月的行中,所以它看起来像这样:

Segment   YearMonth    Calls
1           201505       20
            201506       20
            201507       20
            201508       20
            201509       20
2           201505       20
...

我的问题是,如何在每个新细分之前插入空白行? 谢谢!

2 个答案:

答案 0 :(得分:1)

SQL通常不会进行格式化,但Oracle SQL * Plus会进行格式化。如果您正在使用SQL * Plus并且您的查询将返回:

SEGMENT     YEARMONTH      CALLS
1           201505       20
1           201506       20
1           201507       20
1           201508       20
1           201509       20
2           201505       20
2           201506       20

您可以输入:     突破分段 在你的查询之前得到类似的东西:

SEGMENT     YEARMONTH    CALLS
1           201505       20
            201506       20
            201507       20
            201508       20
            201509       20
2           201505       20
            201506       20

如果要在每个SEGMENT之后添加空格,可以使用:

BREAK ON SEGMENT SKIP 1

如果您使用的不是SQL * Plus,则需要在问题中说明。

答案 1 :(得分:1)

如果您想在每个段之前返回一个空行,则某些伪sql可能是:

SELECT * 
FROM 
(   
   SELECT segment
         ,yearmonth
         ,calls
   FROM table
   UNION 
   SELECT segment
         ,[yearmonth] = null
         ,[calls]     = null
   FROM 
   (
      SELECT distinct segment
      FROM table
   ) seg               
) base
ORDER BY segment
        ,yearmonth