表A(类别,编号,名称)
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
B 001 电器
B 002 电子
B 003 充电
B 004 其他
C 001 家用
C 002 其他
D 001 其他
我想输入结果为:按照类别取最大行数输出,其他不够行的以空行补充:
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
B 001 电器
B 002 电子
B 003 充电
B 004 其他
B
C 001 家用
C 002 其他
C
C
C
D 001 其他
D
D
D
D 输出行数
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
B 001 电器
B 002 电子
B 003 充电
B 004 其他
C 001 家用
C 002 其他
D 001 其他
我想输入结果为:按照类别取最大行数输出,其他不够行的以空行补充:
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
B 001 电器
B 002 电子
B 003 充电
B 004 其他
B
C 001 家用
C 002 其他
C
C
C
D 001 其他
D
D
D
D 输出行数
(select a.类别,b.编号 from (select distinct 类别 from tbA)a,(select distinct 编号 from tbA)b)a
left join tbA b on a.类别=b.类别 and a.编号=b.编号
create table tb(col1 char(1),no char(3),name nchar(2))
insert into tb
select 'A','001',N'电视' union all
select 'A','002',N'电脑' union all
select 'A','003',N'手机' union all
select 'A','004',N'平板' union all
select 'A','005',N'其他' union all
select 'B','001',N'电器' union all
select 'B','002',N'电子' union all
select 'B','003',N'充电' union all
select 'B','004',N'其他' union all
select 'C','001',N'家用' union all
select 'C','002',N'其他' union all
select 'D','001',N'其他'
select isnull(a.col1,b.col1) col1,a.no,a.name
from tb a right join(select * from (select distinct no from tb) m,(select distinct col1 from tb) n) b
on a.no=b.no and a.col1=b.col1
/*
col1 no name
---- ---- ----
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
B 001 电器
B 002 电子
B 003 充电
B 004 其他
B NULL NULL
C 001 家用
C 002 其他
C NULL NULL
C NULL NULL
C NULL NULL
D 001 其他
D NULL NULL
D NULL NULL
D NULL NULL
D NULL NULL(20 row(s) affected)
select @ct=max(ct) from(select ct=count(1) from tb group by col1)t
;with cte as(
select * from tb union all
select col1,null,null from tb,master..spt_values where type='p' and number between 1 and @ct
)
select col1,[no],[name] from (select *,row=row_number()over(partition by col1 order by col1,[no] desc,[name] desc) from cte)t where row<=@ct
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
A null null
A null null
A null null
B 001 电器
B 002 电子
B 003 充电
B 004 其他
B NULL NULL
B NULL NULL
C 001 家用
C 002 其他
C NULL NULL
C NULL NULL
C NULL NULL
D 001 其他
D NULL NULL
D NULL NULL
D NULL NULL
D NULL NULL
A 001 电视
A 002 电脑
A 003 手机
A 004 平板
A 005 其他
A null null
A null null
A null null
B 001 电器
B 002 电子
B 003 充电
B 004 其他
B NULL NULL
B NULL NULL
B NULL NULLB NULL NULL