首先关闭:谢谢你的期待;感谢您的时间!
指出:
SCHEMA:for myTable
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2012 01 01 01 99.9
1 2012 01 01 02 65.2
1 2012 01 01 03 -88
7 2012 02 08 21 9.08
1 2012 01 01 09 99.913
1 2013 01 01 01 99.999999
基本上,它是两个值nonUniqueID
和numericValue
,具有精确的日期。
现在,我需要在整个数据库中获得最佳日期。根据上述数据,预期结果将是:
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2013 01 01 01 99.999999
因为这是SQLite,我知道我最终将不得不多次使用MAX()。订单必须是MAX(YEAR),然后是MAX(MONTH),然后是MAX(DAY),然后是MAX(HOUR)。
基本上,查询会像这样工作(我只是不太了解SQL语法来创建查询):
这是一个我从另一个不起作用的StackExchange问题改编的SQL
Select * From (
Select max(YEAR) as Y FROM myTable
union
Select max(MONTH) as M FROM myTable
union
Select max(DAY) as D FROM myTable
union
Select max(HOUR) as H FROM myTable
) myTable;
返回
Y
-----
21
08
02
2013
将此与预期结果进行比较:
nonUniqueID YEAR MONTH DAY HOUR numericValue
1 2013 01 01 01 99.999999
它返回4条记录而不是4条值的一条记录。
有人可以帮我查询一下吗?谢谢!
答案 0 :(得分:3)
试试这个
SELECT nonUniqueID , YEAR , MONTH , DAY , HOUR , numericValue FROM myTable as a
INNER JOIN (Select max(MONTH) FROM myTable) as b
ON a.YEAR = B.YEAR
INNER JOIN (Select max(DAY) FROM myTable) as c
ON b.YEAR = c.YEAR
INNER JOIN (Select max(HOUR) FROM myTable) as d
ON c.YEAR = d.YEAR
WHERE a.YEAR = (Select max(YEAR) FROM myTable)
它返回4个值,因为您使用UNION
这意味着结果是连接在一列
修改强>
我刚刚更新了我的答案,看看是否有效我不太确定这个查询的表现