预先感谢您可能提出的任何建议。
这是我第一次尝试从列式数据库中查询,因此我不确定如何编写查询以提供所需的结果。
我要查询的表(“ census_data”)具有以下类型的值(总共41行):
plan_id ssn_key field value
1 111111111 DOB 1732-02-22
1 111111111 DOR 1830-11-02
1 111111111 FNAME GEORGE
1 111111111 LNAME WASHINGTON
1 863283322 DOR 2020-03-22
作为一个FYI,在某些情况下,我们可能只有某人的SSN和DOB,而没有他们的FNAME,LNAME,DOR(退休日期)等。
我们现在正在使用虚拟数据,并尝试在开始使用大型数据集时进行查询。
我们知道,在某些情况下,实际数据集中会存在一些不合逻辑的数据,例如将来发生的退休日期('DOR')(假设我们的规则为“ DOR”值才能使其生效)。
我们编写了一些查询,这些查询为我们提供了我们想要的结果,例如:
1)给我们所有人FNAME ='GEORGE'和LNAME ='WASHINGTON'的生日
select [value] from [testdb3].[dbo].[census_data]
where ssn_key in (select ssn_key from census_data where field='LNAME'
and value='WASHINGTON' and ssn_key in
(select ssn_key from census_data where field='FNAME'
and [value]='GEORGE')) AND field='DOB'
2)给我们所有具有退休日期的人,在今天之后
select [plan_id], [ssn_key], [field], [value]
from [testdb3].[dbo].[census_data] as
cd where cd.field = 'DOR'and value > GETDATE()
提醒一下,SSN值位于表的第二列,而DOB,FNAME,DOR,LNAME等的值均位于表的第四列。
这是我们的绊脚石。我们正在尝试编写一个查询,为我们提供退休日期大于今天的任何人的名字。我们花了几个小时来尝试一些可行的方法,但到目前为止却是空的。如果有人对代码是什么有任何想法,请告诉我,我将不胜感激。谢谢。