在每行中插入空白行

时间:2020-07-06 04:47:53

标签: sql sql-server

我得到这样的结果:

name
Sally
Dan
Andy
Jackson

我使用了以下查询:

SELECT name from NAMEINFO where nNameIndex<5

我想得到这样的结果:

name
Sally
(blank)
Dan
(blank)
Andy
(blank)
Jackson
(blank)

我尝试过这样的查询:

select name
from (
  select top 100 percent *
  from (
    SELECT nNameIndex, name
    FROM NAMEINFO 
    union all
    select nNameIndex, ''
    from NAMEINFO 
  ) as t
  order by 1
) as r

但结果是:

name
Sally
Dan
Andy
Jackson
(blank)
(blank)
(blank)
(blank)

我想在SQL结果的每一行中插入空白行。 我应该在哪里更改代码以获得想要的结果?

3 个答案:

答案 0 :(得分:3)

select name, ROW_NUMBER() over (order by name) pos from NAMEINFO where nNameIndex < 5
union all
select '', ROW_NUMBER() over (order by name) from NAMEINFO where nNameIndex < 5
order by pos, name desc

但实际上您不应该在数据库中使用此应用程序。

答案 1 :(得分:3)

在您的初始查询中,您几乎拥有它:

  select name
  from (
    SELECT nNameIndex, name
    FROM NAMEINFO 
    union all
    select nNameIndex, ''
    from NAMEINFO 
  ) as t
  order by nNameIndex

答案 2 :(得分:2)

您可以尝试ROW_NUMBER()获得结果。

AzureAd
DECLARE @table table(name varchar(50))

insert into @table
values 
('Sally')
,('Dan')
,('Andy')
,('Jackson');


SELECT name
from
(
select name, ROW_NUMBER() OVER (ORDER BY name) as rnk from @table
union all
SELECT '',ROW_NUMBER() OVER (ORDER BY (SELECT null)) as rnk  from @table
) as t
order by rnk,name desc
相关问题