[英]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.