我试图编写一个简单的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');
答案 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