DB2查询合并2个十进制列并找到最大值

Posted

技术标签:

【中文标题】DB2查询合并2个十进制列并找到最大值【英文标题】:DB2 Query to merge 2 decimal column and find max 【发布时间】:2018-12-12 04:38:19 【问题描述】:

我在 DB2 表 ExpiryDate 中有两列

到期年份 - 输入小数和长度(4,0)

到期月份 - 输入小数和长度 (2,0)

我需要编写一个 DB2 查询来获取最新的到期日期,因为我需要结合提交的年份和月份并找出最新的到期日期。

提前致谢

【问题讨论】:

【参考方案1】:
select max((expyear * 100) + expmth)
from mytable;

【讨论】:

【参考方案2】:

其他方法:

select exp_month, exp_year
from ExpiryDate 
order by exp_year desc, exp_month desc
fetch first rows only

【讨论】:

【参考方案3】:

您可以将两个字段都转换为 CHAR 并将它们连接起来,或者您可以尝试类似的方法

SELECT max(expirymonth)
  FROM table
 WHERE expiryyear = ( SELECT max(expiryyear) 
                        FROM table)

【讨论】:

【参考方案4】:
select year, month, date(digits(dec(year, 4))||'-'||digits(dec(month, 2))||'-01') as dt
from table(values 
  (2018, 1)
, (2017, 4)
) t(year, month)
order by dt desc
fetch first 1 row only;

【讨论】:

以上是关于DB2查询合并2个十进制列并找到最大值的主要内容,如果未能解决你的问题,请参考以下文章

如何在DB2上将十六进制转换为十进制

如何从 Db2 中的十进制字段中获取无效值列表?

合并 2 个二进制文件。文件之间的剩余数据

将 DB2 中的 2 个 Select Queries 合并为一个 Result

查找员工表 db2 大型机的第 n 个最大薪水

使用 CCSID 转换值以匹配 db2 中的另一个十六进制