繁体   English   中英

将一个表中的多行连接到另一表中的一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM