Выберите данные из таблицы 2 с любой функцией соединения или другой - PullRequest
0 голосов
/ 26 июня 2019

У меня есть две таблицы в SQL

|Name|Pos|Section|         |ID |Month|Pos|Section|  
------------------         -----------------  
|Jim |Sup|   HD  |         |R01|Jan  |Sup|   SA  |  
|Don |Sup|   SA  |         |R02|Jan  |Ast|   SA  |  
|Rin |Ast|   SA  |         |R03|Feb  |Ast|   HD  |  
|Boy |Ast|   HD  |         |R04|Jan  |Sup|   HD  |

Мне нужна строка команды для данных, как показано в таблице ниже.

|ID |Month|Pos|Section|Name|  
----------------------------  
|R01|Jan  |Sup|  SA   |Don |  
|R02|Jan  |Ast|  SA   |Rin |  
|R04|Jan  |Sup|  HD   |Jim |

Помогите мне, пожалуйста.

Ответы [ 3 ]

1 голос
/ 26 июня 2019
declare  @tab1 table (Name varchar(50),Pos varchar(50),Section varchar(50))
declare  @tab2 table (ID varchar(50),Month2 varchar(50),Pos varchar(50),Section varchar(50))

insert into @tab1
select 'Jim','Sup','HD' 
union
select 'Don ','Sup','SA'         
union
select 'Rin ','Ast','SA'      
union
select 'Boy ','Ast','HD'     


insert into @tab2

select 'R01','Jan','Sup','SA'
union
select 'R02','Jan','Ast','SA'
union
select 'R03','Feb','Ast','HD'
union
select 'R04','Jan','Sup','HD'


--select * from @tab1
--select * from @tab2

select t2.*,t1.Name
from  @tab1 t1
inner join @tab2 t2 on t2.Section = t1.Section and t1.Pos = t2.Pos
and t2.Month2 = 'Jan'

Выход:

ID  Month2  Pos Section Name
R01 Jan Sup SA  Don 
R02 Jan Ast SA  Rin 
R04 Jan Sup HD  Jim
1 голос
/ 26 июня 2019

Попробуйте объединить две таблицы следующим запросом:

Select Table2.ID,Table2.Month,Table2.Pos,Table2.Section,Table1.Name
From Table2 INNER JOIN Table1
ON Table2.Section =Table1.Section 
AND Table2.Pos=Table1.Pos 
AND Table2.Month='Jan'
1 голос
/ 26 июня 2019

Простой JOIN вернет соответствующий результат ввода:

SELECT TT.ID, TT.[Month], TT.Pos, TT.Section, TO.[Name]
FROM TableTwo TT 
JOIN TableOne TO ON TO.Pos = TT.Pos AND TO.Section = TT.Section
WHERE TT.[Month] = 'Jan'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...