简体   繁体   English

在每一行中插入空白行

[英]Insert blank row in every row

I have a result like this:我有这样的结果:

name
Sally
Dan
Andy
Jackson

I used this query:我使用了这个查询:

SELECT name from NAMEINFO where nNameIndex<5

and I want to get result like this:我想得到这样的结果:

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

I tried query like this:我试过这样的查询:

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

but result is:但结果是:

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

I want to insert blank row into every row in my SQL result.我想在 SQL 结果的每一行中插入空白行。 Where should I change my code to get wanted result?我应该在哪里更改我的代码以获得想要的结果?

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

but really you should not do this in your database but in the consuming application.但实际上您不应该在数据库中执行此操作,而应在使用应用程序中执行此操作。

In your initial query, you almost have it:在您的初始查询中,您几乎拥有它:

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

You can try ROW_NUMBER() to achieve the results.您可以尝试 ROW_NUMBER() 来获得结果。

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
+---------+
|  name   |
+---------+
| Andy    |
|         |
| Dan     |
|         |
| Jackson |
|         |
| Sally   |
|         |
+---------+

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM