基于sqlserver中的字段从主表获取值
我想根据事务表的不同列值从主表中检索值 我的基于sqlserver中的字段从主表获取值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想根据事务表的不同列值从主表中检索值 我的master表将包含用户名、名、姓 我的事务表将具有Id、CreatedUser、updateuser 所以我希望查询从sql server获取报告,从createruser的主表中获取FirstName,lastName,从updateuser的主表中获取FirstName,lastName 例: 主表 User ID First Name Last Name cer001 Ds CV cer002 vb av 事务表 id Creat
master
表将包含用户名、名、姓
我的事务
表将具有Id、CreatedUser、updateuser
所以我希望查询从sql server获取报告,从createruser的主表中获取FirstName,lastName,从updateuser的主表中获取FirstName,lastName
例:
主表
User ID First Name Last Name
cer001 Ds CV
cer002 vb av
事务表
id CreatedUser UdatedUser
2323 cer001 cer002
所以报告应该得到如下结果
Id CreatedUser UpdatedUSer
2323 Ds,CV Vb,av
它应该是明智的性能也很好。请帮助如何获取您正在寻找的
自加入
select
t.Id, m.FirstName +','+m.LastName as CreatedUser,
mm.FirstName +','+mm.LastName as UpdatdUser
from Master m
inner join Transaction t on t.CreatedUser = m.[User ID]
inner join Master mm on mm.[User ID]= t.UpdatedUser
您应该尝试从事务表到主表的左联接。
留下来处理任何空值
查询将被删除
create table [Master] ([User ID] varchar(10), [First Name] varchar(10), [Last Name] varchar(10));
insert into [Master] values
('cer001','Ds','CV'),('cer002','vb','av')
create table [Transaction] (id int, CreatedUser varchar(10),UpdatedUser varchar(10))
insert into [Transaction] values
(2323, 'cer001','cer002');
select
ID=T.id,
CreatedUser= ISNULL (M1.[First Name],'')+ ','+ISNULL(M1.[Last Name],'' ),
UpdatedUser= ISNULL (M2.[First Name],'')+ ','+ISNULL(M2.[Last Name],'')
from
[Transaction] T
LEFT JOIN
[Master] M1
ON T.CreatedUser =M1.[User ID]
LEFT JOIN
[Master] M2
ON T.UpdatedUser =M2.[User ID]
也许您可以尝试使用下面的子查询
Select
t.id,
(Select TOP 1 Rtrim(m.[First Name])+','+RTRIM(m.[Last Name]) from [Master] m where m.[User ID] = t.CreatedUser) as CreatedUser,
(Select TOP 1 Rtrim(m.[First Name])+','+RTRIM(m.[Last Name]) from [Master] m where m.[User ID] = t.UpdatedUser) as UpdatedUser
from [Transaction] t
请通过sql中的联接
。