[英]join multiple rows from one table into one row from another table
我有两个看起来像这样的表:
第一:
IdlokoStav,loko
12345,740 551-7
第二:
idPersonalStav,个人,idLokostav
23456,Some Dude,12345
23457,另一个哥们,12345
结果应如下所示:
loko,Personal1,Personal2,personal3
740 551-7,Some Dude,Another Dude,空
每个IdlokoStav最多可以有三个人,得到这个结果后,我可以根据结果加入其他内容。
Db是Microsoft SQL 2008。
编辑:只要包括所有三场比赛,我都不在乎结果如何排序人。
通常,您不希望像这样将值放入单独的列中以在SQL中进行进一步处理 。 一种方法是使用pivot
; 另一种有条件的聚合。 两者都依赖于row_number()
函数:
select f.Idloko,
max(case when seqnum = 1 then s.personal end) as personal1,
max(case when seqnum = 2 then s.personal end) as personal2,
max(case when seqnum = 3 then s.personal end) as personal3
from first f left join
(select s.*,
row_number() over (partition by IdlokoStav order by idPersonalStav) as seqnum
from second s
) s
on f.IdlokoStav = s.IdlokoStav
group by f.Idloko;
如果发现名称超过三个,则需要在外部select
添加更多max()
语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.