sql,从一个表中获取父母和孩子

时间:2017-12-12 04:21:28

标签: sql

我试图编写一个简单的sql语句,根据父母的招聘日期从一个表中选择一个父项和家属。因为dependents行中的招聘日期字段为空,所以我只获得父母。有人可以帮忙吗?

PRIM KEY    RECORD  LAST FIRST HIRE DATE 
12345   1   JONES   MARY    1/1/2017 
12345   2   JONES   TIM 
6789    1   SMITH   CAROL   5/12/2014 
23456   1   WHITAKE REGINA  5/14/2017 
23456   2   WHITAKE JOE 

父对象中的每个子项都有一行。父亲是1,所有家属都有2.他们共享一个主键(父母的ssn)。我想选择在特定日期范围和他们的家属行之间雇用的所有父母。从属雇用日期列为空。所以当我写下面的内容时......我只得到父行...

SELECT PRIMARY_KEY_VALUE, RECORD_ID, LAST_NAME, FIRST_NAME, HIRE_DATE
FROM CIGNA_ELIGIBILITY
WHERE(HIRE_DATE BETWEEN '20171101' AND '20171131');

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,那么在提供的日期范围内,您希望返回与其关联的记录和所有家属(假设父母/孩子具有相同的prim_key),那么一种方法可能是{ {1}}。

IN

上述查询的作用是从子查询中选择指定日期范围的select * from table1 t1 where t1.prim_key in ( select t2.prim_key from table1 t2 where t2.hire_date between '2017-01-01' AND '2017-01-30' ); ,然后在主查询中选择与之关联的所有记录。

<强>结果:

PRIM_KEY

<强> DEMO

<强>更新

另一种选择可能是使用+---+----------+--------+-------+-------+---------------------+ | | prim_key | record | last | first | hire_date | +---+----------+--------+-------+-------+---------------------+ | 1 | 12345 | 1 | JONES | MARY | 01.01.2017 00:00:00 | | 2 | 12345 | 2 | JONES | TIM | NULL | +---+----------+--------+-------+-------+---------------------+

exists