我需要从同一个表中的两个不同列返回两个最大日期。我希望结果在同一行。 这是我的表数据:
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
答案 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
;