Sql 从一个表中获取两个不同的返回列,但筛选器不同
我有两个表,我需要一个表中的某些数据,然后我需要连接另一个表。然而,联接表只有一列我需要,但我需要它根据其中的信息类型在两个不同的列中返回它 例如: 表1Sql 从一个表中获取两个不同的返回列,但筛选器不同,sql,sql-server,Sql,Sql Server,我有两个表,我需要一个表中的某些数据,然后我需要连接另一个表。然而,联接表只有一列我需要,但我需要它根据其中的信息类型在两个不同的列中返回它 例如: 表1 Key ID 123 1 789 2 表2 Key Type Name 123 R Red 123 B Blue 789 R Black 789 D DULL 表3(我试图返回的结果) 可能不仅仅是类型R和类型B,所以我需要确保我只返回该信息,但具体地将该信息放在表3的列中 一种方法是
Key ID
123 1
789 2
表2
Key Type Name
123 R Red
123 B Blue
789 R Black
789 D DULL
表3(我试图返回的结果)
可能不仅仅是类型R和类型B,所以我需要确保我只返回该信息,但具体地将该信息放在表3的列中 一种方法是
join
:
select t1.*, t2r.name as r_name, t2b.name as b_name
from table1 t1 left join
table2 t2r
on t2r.key = t1.key and t2r.type = 'R' left join
table2 t2b
on t2b.key = t1.key and t2b.type = 'B';
这是标准SQL,在MySQL和SQL Server中都是一样的。另一个选项是PIVOT 示例
Select *
From (
Select [Key]
,Item=concat('Type ',[Type])
,Value=[Name]
From YourTable
Where [Type] in ('R','B')
) src
Pivot (max(value) for Item in ([Type R],[Type B]) ) pvt
返回
Key Type R Type B
123 Red Blue
789 Black NULL
MySQL还是SQL Server?投票反对不指定您使用的是MySQL还是SQL-Server。对不起,SQL Server。
Key Type R Type B
123 Red Blue
789 Black NULL