【发布时间】:2019-08-15 04:34:30
【问题描述】:
使用 SQLite,我有这样的表:
ClockId ProjectId DateTime
-----------------------------------------------------------------
1 1 1398/01/01 10:00:00
2 1 1398/01/01 11:00:00
3 2 1398/01/01 10:00:00
4 2 1398/01/01 11:00:00
5 1 1398/01/01 10:00:00
6 1 1398/01/01 11:00:00
7 1 1398/01/01 10:00:00
8 2 1398/01/01 10:00:00
9 1 1398/01/01 11:00:00
10 2 1398/01/01 11:00:00
我需要这个输出:
ProjectId Diff(minute)
------------------------------
1 180
2 120
实际上我需要两个这样的连接:
ClockId ClockId
---------------------------
1 2
3 4
5 6
7 9
8 10
我该怎么做?
我在 sql 而不是 SQLite 中尝试此代码:
select
maintbl2.ProjectId,
sum(maintbl2.diff) as sum
from (SELECT
ROW_NUMBER() OVER(ORDER BY mainTbl.ProjectId) AS Row#,
mainTbl.ProjectId,
DATEDIFF(minute, mainTbl.[DateTime], c1.[DateTime]) as diff
FROM [Clock] as c1
CROSS APPLY
(SELECT TOP 1 *
FROM [Clock] as c2
WHERE c1.ProjectId = c2.ProjectId and c1.DateTime > c2.DateTime
) mainTbl) maintbl2
但不能正常工作!!!
【问题讨论】:
-
我真的很困惑。你说你需要一张输出表。美好的。然后你给出另一个你真正需要的版本。然后您使用 SQL Server 语法显示查询,但该问题被标记为 sqlite。这里完全混乱。
-
对于get table2,我有两个加入第一个表,所以table3是加入的结果。
-
第三张表的两列是什么?名称相同但必须引用不同的条目/概念?
-
不,它们只是加入后第一个表的列!
标签: android sql sqlite join self-join