ahmed_sa Ответов: 1

Как получить активную деталь для устаревших деталей по идентификатору детали x на столе замены ?


Я работаю на SQL server 2012 я сталкиваюсь с проблемой я не могу получить активные части для устаревших частей

create table #Replacement
(
PartIDC  INT,
PartIDX  INT
)
insert into #Replacement
(PartIDC,PartIDX)
values 
(1222,3421),
(3421,5643),
(5643,2243),
(2243,3491)

create table #LifeCycleMaster
(
ZpartId  int,
Zlc  int
)
insert into #LifeCycleMaster
(ZpartId,Zlc)
values
(1222,2000),
(3421,2000),
(5643,2000),
(2243,2000),
(3491,2001)
Create table #acceptedvalues
(
acceptedvaluesid int,
acceptedvaluesname nvarchar(50)
)
insert into #acceptedvalues
values
(2000,'Obsolete'),
(2001,'Active')


Результат :

PartIDX   PartIDC
1222      3491


Я получаю первую часть устаревшей так что когда получу первую часть устаревшей будет 1222

затем я ищу активную часть для устаревшей части 1222 на части X я нашел ее не в той же строке

но я нашел его на номер строки 4 и значения со стороны X, как 3491

так как же это сделать ?

Что я уже пробовал:

select r1.PartIDC,r2.PartIDX from #Replacement r1
inner join #Replacement r2 on r1.PartIDC=r2.PartIDX
inner join #LifeCycleMaster m on m.ZpartId=r1.PartIDX
where m.Zlc=2001

1 Ответов

Рейтинг:
1

Gerry Schmitz

Вы соединяете #replacement с самим собой

select r1.PartIDC,r2.PartIDX from #Replacement r1
inner join #Replacement r2 on r1.PartIDC=r2.PartIDX
inner join #LifeCycleMaster m on m.ZpartId=r1.PartIDX
where m.Zlc=2001


ahmed_sa

спасибо за ответ
Ожидаемый результат :
PartIDC PartIDX
1222 3491
но я понимаю это неправильно, так как
PartIDC PartIDX
2243 2243
когда примените ответ выше
можете ли вы помочь мне получить правильный ответ

Gerry Schmitz

Попробуй что-нибудь. Я показал тебе, что не так.