主从表数据查询
表A:
ID Name 分类 启用
1 name1 null 0
2 name2 null 0
3 name3 null 0
4 name4 分类1 1
5 name5 null 0
6 name6 null 0
7 name7 分类3 1
8 name8 null 0
9 name9 分类2 1
10 name10 null 0
表B:
ID 分类 分类名称
1 分类1 分类名称1-1
2 分类1 分类名称1-2
3 分类1 分类名称1-3
4 分类2 分类名称2-1
5 分类2 分类名称2-2
6 分类3 分类名称3-1
7 分类3 分类名称3-2
8 分类3 分类名称3-3
得到结果:
IDName
1name1
2name2
3name3
4分类名称1-1
5分类名称1-2
6分类名称1-3
7name5
8name6
9分类名称3-1
10分类名称3-2
11分类名称3-3
12name8
13分类名称2-1
14分类名称2-2
15name10
with tb(ID,Name,分类,启用)as(
select 1,'name1',null,0 union
select 2,'name2',null,0 union
select 3,'name3',null,0 union
select 4,'name4','分类1',1 union
select 5,'name5',null,0 union
select 6,'name6',null,0 union
select 7,'name7','分类3',1 union
select 8,'name8',null,0 union
select 9,'name9','分类2',1 union
select 10,'name10',null,0)
,tc(ID,分类,分类名称)as(
select 1,'分类1','分类名称1-1' union
select 2,'分类1','分类名称1-2' union
select 3,'分类1','分类名称1-3' union
select 4,'分类2','分类名称2-1' union
select 5,'分类2','分类名称2-2' union
select 6,'分类3','分类名称3-1' union
select 7,'分类3','分类名称3-2' union
select 8,'分类3','分类名称3-3')
select id=row_number()over(order by tb.id,ISNULL(分类名称,name)),
ISNULL(分类名称,name) from tb full join tc on tb.分类=tc.分类
if OBJECT_ID('Test1', 'u') is not null
drop table Test1
Create Table Test1
(
ID int primary key not null,
Name Varchar(64) not null,
Sort1 varchar(64) null,
IsUsed int not null
)
Insert into Test1
Select 1 , 'name1', 'null' , 0
Union all
Select 2 , 'name2' , null , 0
Union all
Select 3 , 'name3' , null , 0
Union all
Select 4 , 'name4' , '分类1' , 1
Union all
Select 5 , 'name5' , null , 0
Union all
Select 6 , 'name6' , null , 0
Union all
Select 7 , 'name7' , '分类3' , 1
Union all
Select 8 ,'name8' , null , 0
Union all
Select 9 ,'name9' , '分类2' , 1
Union all
Select 10 ,'name10' , null , 0
if OBJECT_ID('Test2', 'u') is not null
drop table Test2
Create Table [Test2]
(
ID int primary key not null,
Sort1 varchar(64) not null,
SortName Varchar(128) not null
)
Insert into [Test2]
Select
1 , '分类1' , '分类名称1-1'
Union all
Select 2 , '分类1' , '分类名称1-2'
Union all
Select 3 , '分类1' , '分类名称1-3'
Union all
Select 4 , '分类2' , '分类名称2-1'
Union all
Select 5 , '分类2' , '分类名称2-2'
Union all
Select 6 , '分类3' , '分类名称3-1'
Union all
Select 7 , '分类3' , '分类名称3-2'
Union all
Select 8 , '分类3' , '分类名称3-3' ;
with a as
(
Select Test1.Name , Test2.SortName
From Test1 Left Outer Join Test2 On Test1.Sort1 =Test2.Sort1
)
Select case when SortName IS null then Name else SortName end
From a