我有一个包含三个日期列和一些资产信息的表。比较SQL Server中3列之间的日期值并在SQL Server中提取资产信息
- ASSET(APPR_DATE_1,APPR_DATE_2,APPR_DATE_3,ID,姓名,地址,...)
样本数据:
'1-1-2010','1-1-2012','1-1-2015',1,'Peter','USA'....
'1-1-2015','1-10-2014','1-19-2013',2,1,'John','USA'....
'1-1-2008','1-25-2010','4-29-2011',3,'Edward','UK'....
'1-25-2012','10-25-2011','9-11-2013',4,'Nancy','Kenya'....
期望的结果:
'1-1-2010','1-1-2012','1-1-2015',1,'Peter','USA'....
'1-1-2008','1-25-2010','4-29-2011',3,'Edward','UK'....
'1-25-2012','10-25-2011','9-11-2013',4,'Nancy','Kenya'....
如果您看到结果集,则它包含比示例数据少1行。结果集仅包含最近和最近第二个日期之间的差值大于365的那些行或第二个最近日期和最早日期之间的差值大于365
它们具有随机日期。对于每一行,我需要找到最近的,第二最近和最老的日期,一旦我得到的,我需要比较 -
列表出资产的信息,其中最近的日期和最近的第二个日期之间的差异较大比1年。
列出第二个最近日期和最早日期之间的差异大于1年的资产信息。
2点不应包括已经包含在第1点
山口ID
是唯一的资产。这在SQL中可能吗?
是的,这是可能的。但为了帮助我们,请提供样本数据和预期结果,帮助我们理解您的问题。 –
你需要从某件事开始。因此,从'SELECT * FROM ASSET'开始。接下来尝试'SELECT *,DATEDIFF(y,APPR_DATE_1,APPR_DATE_2)作为Diff1 FROM ASSET'。你有什么想法如何建立它?这只是一堆基于'DATEDIFF'结果的布尔逻辑。乏味的部分是,如果三个日期是随机的顺序,你需要尝试每一种组合。 –
或者您可以从一些逻辑开始,对日期进行一致排序并建立在以下基础上:'SELECT CASE当APPR_DATE_1> APPR_DATE_2和APPR_DATE_1> APPR_DATE_3 THEN APPR_DATE_1当APPR_DATE_2> APPR_DATE_1和APPR_DATE_2> APPR_DATE_3然后APPR_DATE_2 ELSE APPR_DATE_3从资产END D1# –