计算最大日期

时间:2017-05-29 17:36:37

标签: sql oracle

我需要从同一个表中的两个不同列返回两个最大日期。我希望结果在同一行。 这是我的表数据:

store   item    tran-code   date
1788    2004635    1      17.05.27
1788    2004635    30     17.05.26

我想要这个......

store   item      date_1    date_30
1788    2004635  17.05.27   17.05.26

但如果你能让我归还,那就完美了

{{1}}

其中date_1是tran-code = 1和的最大日期 date_30是tran-code的最大日期= 30

3 个答案:

答案 0 :(得分:1)

你可以使用

select a.store, a.item, max(a.date) as date_1, t.date_30 
from my_table a 
inner join (
select store, item, max(date) as date_30
from my_table a 
where a.trans-code = 30 
group by store, item
) t on a.store = t.store and a.item = t.item 
group by a.store, a.item, t.date_30 

答案 1 :(得分:1)

如果您只选择1套商店和商品,那么您可以使用它。但是如果您添加更多商店和商品,请使用@ scaisEdge的答案加入。

select distinct store,item,
(select max(date) from table1 where tran-code=1) as date_1 
,(select max(date) from table1 where tran-code=30) as date_30
from table1;

答案 2 :(得分:1)

SELECT STORE,item ,tran_code,date1 FROM (
SELECT a.*,Row_Number() OVER (PARTITION BY tran_code ORDER BY date1 DESC ) rnk FROM tran a)
WHERE tran_code IN (1,30) AND rnk=1
;