我得到这样的结果:
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结果的每一行中插入空白行。 我应该在哪里更改代码以获得想要的结果?
答案 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