我有两个表,我希望将数据从一个表合并到另一个表中。具体来说,表_A是数百万患者出院的记录;表_B告诉某一特定医院是否被标记为急性护理机构。我想从表A中获取所有记录,医院是一个急性护理机构。
表A有许多字段;相关性:
HOSPITAL_ID | YEAR_AND_QUARTER | RECORD_ID
记录ID是唯一的。每个HOSTPIAL_ID有数百到数千个记录(record_ID),每个YEAR_and_QUARTER 有数百个HOSPITAL_ID
Table_B有几个字段:
HOSPITAL_ID | YEAR_ALONE | ACUTE_INDICATOR
1223 | 2004 | X
1223 | 2005 | X
1289 | 2004 |
1289 | 2005 | X
Hospital_ID和年份只一起出现一次。
我不能加入Hospital_ID,因为在表B中,每个医院ID都出现不止一次。此外,表B将所有季度数据汇总为一年(而不是2004年第一季度、2004年第二季度……仅2004年)。
因此,我想要的最终输出(最好是作为一个新表)只是添加到table_a 的ACUTE_INDICATOR
HOSPITAL_ID | YEAR_AND_QUARTER | ACUTE_INDICATOR | RECORD_ID....
在应用程序方面,我还是一个SQL婴儿,甚至不太确定该搜索什么来寻找答案。我的最佳猜测是(伪):
INNER JOIN (SELECT B.ACUTE_INDICATOR)
ON A.HOSPITAL_ID = B.HOSPITAL_ID
WHERE LEFT(A.YEAR_AND_QUARTER,4) = B.YEAR_ALONE
非常感谢:)
这将为您创建新表:
SELECT
a.HOSPITAL_ID,
a.YEAR_AND_QUARTER,
b.ACUTE_INDICATOR,
a.RECORD_ID
INTO c
FROM
a JOIN
b ON a.HOSPITAL_ID = b.HOSPITAL_ID
AND LEFT(a.YEAR_AND_QUARTER, 4) = b.YEAR_ALONE
那么,如果您只想查询该表中的急性护理设施。。。
SELECT * FROM c WHERE ACUTE_INDICATOR = 'x'
我只需要使用EXISTS
:
<your select from table A>
FROM TableA A
WHERE EXISTS (SELECT 1
FROM TableB B
WHERE A.HOSPITAL_ID = B.HOSPITAL_ID
AND LEFT(A.YEAR_AND_QUARTER,4) = B.YEAR_ALONE
AND b.Acute-Indicator = 'X')
如果表B中每个医院有1000个,这不会给你任何重复的行,但仍然按照你想要的方式过滤。