2017-05-29 109 views
-2

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

If i have this   
store item tran-code date 
1788 2004635 1  17.05.27 
1788 2004635 2  17.05.27 
1788 2004635 30  17.05.26 
1788 2004635 2  17.05.21 
1788 2004635 1  17.05.21 
1788 2004635 2  17.05.20 
1788 2004635 1  17.05.20 

,我想这...

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 

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

+0

我不知道为什么这是你想要的答案。你的结果中有两行,所以它有点违背了你的问题的第二部分。 – Tomer

+0

MySQL或Oracle或SQLServer – Utsav

回答

0

试试这个:

SELECT * FROM my_table 
WHERE sales_date = MAX(sales_date) 
OR purchase_date = MAX(purchase_date) 
ORDER BY MAX(sales_date), MAX(purhcase_date); 
1

只需使用group by

select store,item, 
max(sales_date) as sales_date , 
max(purchase_date) as purchase_date 
from your_table 
group by store,item; 

Rextester Demo for SQL Sever但是这是一个通用的查询,并在所有RDBMS会工作。

0

Keepeing两个日期中单独列是紫霞使用:

select concat(max(sales_date), ' ',max(purchase_date)) as newColumn 

注意我是如何两个日期之间的增值空间。

+0

这完全不是OP想要的。 – Utsav

+0

我忘记把最大值放在colum之前。让我编辑,它会做的伎俩 –