如何在SQL Server中以单列显示父表数据和子表数据?
我在SQL Server中有两个表。第一个表有一个成员名称列,第二个表有其相关名称。我想在单列中显示两个表中的数据,就像若成员有任何亲属,那个么它必须立即显示在成员名称后的第二行中,若成员并没有任何亲属,那个么只能显示一行。例如,如下所示,有第一个memebrsname表及其cityname如何在SQL Server中以单列显示父表数据和子表数据?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在SQL Server中有两个表。第一个表有一个成员名称列,第二个表有其相关名称。我想在单列中显示两个表中的数据,就像若成员有任何亲属,那个么它必须立即显示在成员名称后的第二行中,若成员并没有任何亲属,那个么只能显示一行。例如,如下所示,有第一个memebrsname表及其cityname Regid Name City ---------------------------------------- 1 Dr. Dharmesh Patel
Regid Name City
----------------------------------------
1 Dr. Dharmesh Patel New york
2 Dr. Vivek Patel New york
3 Dr. Udayan Kachchhi New york
4 Dr. Geeti Maheshwari New york
5 Dr. SHANKAR DAYAL Arizona
6 Dr. Tejas Kakkad New york
7 Dr. TUSHAR PATEL California
8 Dr. Arpan Shah New york
9 Dr. AMI PATEL New york
而亲属表
如下所示:
Regid Name City
-----------------------------------
6 MEETA KAKKAD New york
1 Aditya Patel New york
1 Namisha Patel New york
3 Dimple Kachchhi New york
4 Pankaj Maheshwari New york
8 Agastya Shah New york
8 Roma Shah New york
regid Name City
---------------------------------------------
1 Dr. Dharmesh Patel New york
1 Aditya Patel New york
1 Namisha Patel New york
2 Dr. Vivek Patel New york
3 Dr. Udayan Kachchhi New york
3 Dimple Kachchhi New york
4 Dr. Geeti Maheshwari New york
4 Pankaj Maheshwari New york
5 Dr. SHANKAR DAYAL Arizona
6 Dr. Tejas Kakkad New york
6 MEETA KAKKAD New york
7 Dr. TUSHAR PATEL California
8 Dr. Arpan Shah New york
8 Agastya Shah New york
8 Roma Shah New york
9 Dr. AMI PATEL New york
我想展示这样的结果:
Regid Name City
-----------------------------------
6 MEETA KAKKAD New york
1 Aditya Patel New york
1 Namisha Patel New york
3 Dimple Kachchhi New york
4 Pankaj Maheshwari New york
8 Agastya Shah New york
8 Roma Shah New york
regid Name City
---------------------------------------------
1 Dr. Dharmesh Patel New york
1 Aditya Patel New york
1 Namisha Patel New york
2 Dr. Vivek Patel New york
3 Dr. Udayan Kachchhi New york
3 Dimple Kachchhi New york
4 Dr. Geeti Maheshwari New york
4 Pankaj Maheshwari New york
5 Dr. SHANKAR DAYAL Arizona
6 Dr. Tejas Kakkad New york
6 MEETA KAKKAD New york
7 Dr. TUSHAR PATEL California
8 Dr. Arpan Shah New york
8 Agastya Shah New york
8 Roma Shah New york
9 Dr. AMI PATEL New york
如何在SQL Server中获得上述结果?请帮助似乎您正在为regid订购的两个表寻找一个并集
SELECT Regid,Name,City FROM
(
SELECT Regid,Name,City FROM PARENT
UNION
SELECT Regid,Name,City FROM CHILD
) AS T1
ORDER BY Regid
select Regid, Name, City
from table1
union
select Regid, Name, City
from table2
order by regid
使用row\u number()
函数和union all
获取其父记录下的子记录
select *,
row_number() over (partition by Regid order by Sort) Seq
from
(
select Regid, Name, City, 1 AS Sort from parent p
UNION ALL
select Regid, Name, City, 2 AS Sort from child c
)t
您还可以定义显式排序
select Regid, Name, City, 1 AS Sort from parent p
UNION ALL
select Regid, Name, City, 2 AS Sort from child c
order by RegId, Sort
假设您希望缩进亲属的姓名。使用
seq
确保成员出现在其亲属面前:
select Regid, Name, City
from
(
select 1 as seq, Regid, Name, City
from table1
union all
select 2, Regid,' ' + Name, City
from table2 ) t
order by seq, Regid
您不应该使用
row_number()
而应该使用order by Regid,Sort
@JamesZ。。。正确的。