我有一张桌子,医生可以在多个地方工作 - 其中一个不在其他地方。每个地点都处于一个州。我想创建一个列,显示该医生的主要位置的状态。因此,如果某个位置不是主要位置,那么我想查看主要位置的状态。
我正在尝试创建PrimaryLocationState
列,但我似乎无法得到此内容。
declare @t table (doctorid int,
primarylocation char,
state varchar(2)
)
insert into @t
values (1, 'Y', 'FL'), (1, 'N', 'GA'),
(2, 'Y', 'TX'), (2, 'N', 'CA');
我试图得到这个结果:
DoctorId PrimaryLocation State PrimaryLocationState
-----------------------------------------------------------------
1 Y FL FL
1 N GA FL
2 Y TX TX
2 N CA TX
答案 0 :(得分:3)
您可以使用相关子查询或OUTER APPLY来获取主要位置
read_html('http://www.imdb.com/title/tt1490017/') %>%
html_nodes(xpath = '//div[@class="originalTitle"]/node()[not(self::span)]') %>%
html_text()
答案 1 :(得分:2)
示例强>
Select *
,PrimaryLocationState =max(case when primarylocation='Y' then state end) over (partition by doctorid)
from @t
<强>返回强>
doctorid primarylocation state PrimaryLocationState
1 Y FL FL
1 N GA FL
2 Y TX TX
2 N CA TX
答案 2 :(得分:0)
您需要INNER JOIN
首先,您需要找到每位医生的主要位置。
SELECT DoctorID, state as PrimaryLocationState
FROM yourTable
WHERE primarylocation = 'Y';
然后将该信息添加到每一行
SELECT t.*, P.PrimaryLocationState
FROM YourTable t
INNER JOIN ( SELECT DoctorID, state as PrimaryLocationState
FROM yourTable
WHERE primarylocation = 'Y') P
t.DoctorID = p.DoctorID