Получить один и тот же столбец дважды с разными условиями в SQL - PullRequest
0 голосов
/ 18 марта 2019

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

Мой запрос такой, но следующий запрос извлекает два разных столбца. Но я хочу получить один и тот же столбец дважды. Как этого добиться?

Select name from tbCustomer where ID in (select ID from tbOldCustomer where oldID= 1)
Select name from tbCustomer where ID in (select ID from tbOldCustomer where oldID= 2)

tbCustomer имеет две колонки:
ID имя
1 & emsp; ааа
2 & emsp; БББ
3 & emsp; ссс
4 & emsp; ддд

tbOldCustomer имеет два столбца:

ID oldID
1 & emsp; 2
2 & emsp; 1
3 & emsp; 1
4 & emsp; 2
4 & emsp; 1

хотел бы получить имя, где oldID в (1, 2) и вывод должен быть следующим:

имя имя1
bbb & emsp; ааа
ccc & emsp; ддд
ддд
& EMSP;

Ответы [ 6 ]

1 голос
/ 18 марта 2019

Я думаю, что вы можете достичь этого, просто JOIN

Select name 
from tbCustomer tc 
inner join tbOldCustomer toc On toc.id = tc.id
where toc.oldID IN (1,2)
1 голос
/ 18 марта 2019

использование существует

select t1.name 
from tbCustomer t1 
exists( select 1 from  tbOldCustomer t2  where  t1.id = t2.id
                                       and t2.oldid in (1,2)
        )
0 голосов
/ 18 марта 2019

Попробуйте это

SELECT  name 
FROM tbCustomer tb1 
JOIN (SELECT ID FROM tbOldCustomer WHERE oldID = 1 OR oldID= 2) tb2
     ON tb1.ID = tb2.ID
WHERE tb1.ID IN (SELCT ID from tbOldCustomer where oldID in (1, 2))
0 голосов
/ 18 марта 2019

Пожалуйста, попробуйте это.

Select name from tbCustomer where ID in (select ID from tbOldCustomer where oldID IN(1,2))

OR

Select A.name from tbCustomer A
INNER JOIN tbOldCustomer  B
ON A.id = B.Id
AND B.OldId In (1,2)
0 голосов
/ 18 марта 2019

Вы должны попробовать

Select tc.name, toc.name from tbCustomer tc inner join 
tbOldCustomer toc On toc.id = c.id where toc.oldID IN (1,2)
0 голосов
/ 18 марта 2019

вы можете попробовать использовать conditional aggregation с case when expression

select max(case when oldID= 1 then name end) as name1,
       max(case when oldID= 2 then name end) as name2
from tbCustomer join tbOldCustomer on ID=oldID where oldid in (1,2)
group by oldid
...