无法为我的问题编写Sql。 我有一个包含2列项目代码和到期日期的表格。
Itemcode. Expiration
Abc123. 2014-08-08
Abc234. 2014-07-07
Cfg345. 2014-06-06
Cfg567. 2014-07-08
输出应基于项目代码的前3位数字和最小的expirarion日期,如下所示
Abc. 2014-07-07. Abc234
Cfg. 2014-06-06. Cfg345
由于
EDITED:
查询就是这样,实际上是连接多个表来获取itemcode和expiration。
选择substr(y.itemcode,1,3),
min(x.expiration_date)到期,
y.itemcode
来自X x,Y y
其中y.id = x.id
and x.number in
(select number from xyz
where id = x.id
and codec in ('C', 'M', 'T', 'H')
)
group by substr(y.itemcode,1,3), y.itemcode
答案 0 :(得分:0)
我不熟悉“m”。这是ANSI标准SQL解决方案:
select substring(itemcode, 1, 3), expiration, itemcode
from (select t.*,
row_number() over (partition by substring(itemcode, 1, 3)
order by expiration desc
) as seqnum
from table t
) t
where seqnum = 1;
大多数数据库都支持此功能。有些名称可能略有不同(例如substr()
或left()
用于子字符串操作。)