选择跨列而不是跨行的最大值

时间:2019-11-27 14:59:50

标签: sqlite

我正在尝试这样选择行中列出的每个维度的单独列中的最大值;

 Input Dataset
 Person|Date#1  |Date#2  |Date#3  |Date#4
 ------+--------+--------+--------+---------
 Matt  |12/01/18|01/15/19|02/15/19|04/15/18
 Dave  |01/15/18|01/02/19|03/15/19|11/01/19


Desired result


 Input Dataset
 Person|Max Date|
 ------+--------+
 Matt  |02/15/19|
 Dave  |11/01/19|

1 个答案:

答案 0 :(得分:0)

将表格固定为YYYY-mm-dd之类的适当格式后,表格便会如下所示:

Person      Date#1      Date#2      Date#3      Date#4    
----------  ----------  ----------  ----------  ----------
Matt        2018-12-01  2019-01-15  2019-02-15  2018-04-15
Dave        2018-01-15  2019-01-12  2019-03-15  2019-11-01

它变得微不足道

SELECT Person, max("Date#1", "Date#2", "Date#3", "Date#4") AS "Max Date" FROM mytable;
Person      Max Date  
----------  ----------
Matt        2019-02-15
Dave        2019-11-01

请记住sqlite does not have any date or time types。它使用字符串或数字来保存这些值。当将日期存储为字符串时,必须以一种可以进行有意义的比较的方式来格式化它们。 '04/15/18'大于'01/15/19',因为字符4大于字符1。标准time string formats都没有这个问题。