简体   繁体   English

SQL 如何从连接表中的多个值 select

[英]SQL How to select from multiple values in joined table

I have two tables A and B joined with a common id field.我有两个表 A 和 B 加入了一个公共 id 字段。 Table A has single entries per id.表 A 每个 ID 都有一个条目。 Table B has multiple entries per id.表 B 每个 ID 有多个条目。 Table B has two columns "name" and "customertype".表 B 有两列“名称”和“客户类型”。 I want to be able to SELECT columns from A and B but I want to show the column "name" from Table B three times: once for each separate match of customertype.我希望能够从 A 和 B 中获取 SELECT 列,但我想将表 B 中的“名称”列显示三次:一次针对客户类型的每个单独匹配项。

Example:例子:

2张桌子

I want to be able to SELECT and display:我希望能够 SELECT 并显示:

id,country,name(from EC),date,name(from T1),name(from T2)

How do I do this?我该怎么做呢? I am a novice SQL user.我是新手SQL用户。 Thanks in advance for advice.在此先感谢您的建议。

You can use conditional aggregation:您可以使用条件聚合:

select a.id, a.country, a.date,
       max(case when customertype = 'EC' then name end) as ec,
       max(case when customertype = 'T1' then name end) as t1,
       max(case when customertype = 'T2' then name end) as et2
from a join
     b
     on a.id = b.id
group by a.id, a.country, a.date

You can join and use conditional aggregation:您可以join并使用条件聚合:

select a.id, a.country, a.date,
    max(case when b.customertype = 'EC' then name end) name_ec,
    max(case when b.customertype = 'T1' then name end) name_t1,
    max(case when b.customertype = 'T2' then name end) name_t2
from tablea a 
inner join tableb b on b.id = a.id
group by a.id, a.country, a.date

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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