SQL:从两列返回两个最大日期

时间:2017-05-29 11:14:18

标签: mysql sql-server oracle-sqldeveloper

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

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

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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);

答案 2 :(得分:0)

在单独的列中保持两个日期很好。只需使用它:

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

注意我是如何在两个日期之间添加空格的。