2017-05-09 233 views
-1

我正在研究SQL DB2,我想检索一次具有最大日期值的字段,但日期是三列(日,月,年)。SQL:DB2 3列(日,月,年)日期的最大值和最小值

你能帮我吗?

非常感谢。

+0

你尝试过什么?您可以连接列以形成日期 – uSeruSher

+0

将列组合为字符串然后日期然后在组合列上使用max:http://stackoverflow.com/questions/4852139/converting-a-string-to-a-date -in-db2 – xQbert

+0

SELECT YEAR,MONTH,DAY FROM FILE WHERE YEAR =(从文件中选择MAX(YEAR))==>但是这只会返回最大年份的日期。我想检索最大日期。我不知道如何连接,因为它的数字字段可以请给我更多的解释 – Fazah

回答

0

试试这个代码,请:

select distinct year, month, day 
from (
    select year, month, day, rank() over(order by year desc, month desc, day desc) as rn 
    from [your table name] 
) t 
where rn = 1 

UPDATE1: 如果你有合同编号一些领域,那么你就需要通过声明在使用分区()

select distinct contract_number, year, month, day 
from (
    select contract_number, year, month, day, rank() over(partition by contract_number order by year desc, month desc, day desc) as rn 
    from [your table name] 
) t 
where rn = 1 
+0

它的工作原理,但我试图从其他文件一起检索其他文件也当我添加其他列它不工作 – Fazah

+0

Fazah,你尝试从其他表添加列?这个结构是如何看起来的? –

+0

其实我使用很多表格,我需要检索有很多条件的字段,其中一个是最大日期,另一个是最小日期等... – Fazah

0

你可以做下面的事情。但是您需要使用日期,月份,年份格式的格式更改下面的查询。

select * from urtable where to_date(year||'-'||month||'-'||day,'yyyy-mon-dd') in 
(select max(to_date(year||'-'||month||'-'||day,'yyyy-mon-dd'))) from urtable) 
0
select * from yourtable 
order by colyear desc, colmonth desc, colday desc 
fetch first rwos only 
+0

我觉得我并不清楚自己在展示问题的方式,我会举一个例子:我的表中有很多合约C1有这样的日期:日:01月:02年:2017和C1有另一个这样的日期:日:01月:01年:2017年和其他像这样的合同。我需要做的是取回合同:C1与本合同的最大日期,即日:01月:02年:2017年和相同或其他对照,所以我将有C1的最大日期和C2与其最大日期等等。我希望我现在更清楚,并且很多帮助。 - – Fazah

相关问题