Допустим, у меня есть эта таблица (это упрощено, конечно, есть и другие столбцы):T-SQL возвращает строку, если другая строка не существует
CompanyID (int)
ContactName (varchar(50))
ContactType (char(1))
со значениями:
CompanyID | ContactName | ContactType
-----------------------------------------------
1 | John Doe | A
1 | Jane Smith | B
2 | Ralph Jones | B
3 | Dick Grayson | A
Я хочу, чтобы все компании, в которых есть ContactType = 'A', если нет ContactType = 'A', возвращайте ContactType = 'B'. Таким образом, в этом примере, я хочу:
1, John Doe (because he's a ContactType A)
2, Ralph Jones (because Company #2 doesn't have a ContactType A)
3, Dick Grayson (because he's a ContactType A)
Я не могу просто сказать: «А или В», потому что компания может иметь и другое.
Вот что я пытался (и не)
use MyFancyDatabase
drop table #TypeA
drop table #TypeB
drop table #TypeAB
create table #TypeA(ownerkey int, ContactName varchar(200), ContactType char(1))
insert #TypeA
Select ownerkey, ContactName, ContactType from address
where ContactType = 'A' and CancelDate is null
create table #TypeB(ownerkey int, ContactName varchar(200), ContactType char(1))
insert #TypeB
Select ownerkey, ContactName, ContactType from address
where ContactType = 'B' and CancelDate is null
create table #TypeAB(ownerkey int, ContactName varchar(200), ContactType char(1))
insert #TypeAB
select * from #TypeA
except
select * from #TypeB
Я думаю, на английском языке, это «А, но если нет А, а затем взять B.»
Любые предложения?
попробовать 'сливаются()', может быть. –