选择缩进连接

时间:2013-10-24 08:06:31

标签: sql tsql select join

我的tsql服务器上有两个表

Table 1: Car {id, name}
Table 1: CarPart {id, name, CarId}

我希望我的选择结果看起来与以下格式类似

id  -  carname   -  carpartId   -  carPartName
----------------------------------------------- 
1        car1
                       101          CarPartA
                       102          CarPartV
                       103          CarPartFD
2        car2
                       101          CarPartAA
                       102          CarPartDD
                       103          CarPartD1
3        car3
                       101          CarPartCA
                       102          CarPart1D
                       103          CarPartDB

是否可以在一次选择中使用标识显示?
感谢。

1 个答案:

答案 0 :(得分:2)

这几乎不是一个好主意。无论您使用什么来执行SQL,几乎肯定更适合修改数据的呈现方式。

也就是说,有一些有用的情况,表示层是垃圾,对于那些情况,它可能是有道理的。我会怀疑你正在处理其中一个案件。

select id = presentationid, carname, carpartid, carpartname
from (
select carid = id, presentationid = id, carname = name, carpartid = null, carpartname = null
from Car
union all
select carid = Car.id, presentationid = null, carname = null, carpartid = CarPart.id, carpartname = CarPart.Name
from Car
inner join CarPart
on CarPart.CarId = Car.id
) as sub
order by carid, carpartid;

http://www.sqlfiddle.com/#!6/6a57e/2

由于您需要汽车数据和汽车零件数据的单独行,您需要组合两个单独的select位的结果,并按照汽车零件数据跟随相应的方式对它们进行排序汽车数据。我这样做是通过将carid添加到列表中,即使是汽车零件数据也会填充。