在sqlite中加入select for subtring的奇数/偶数结果?

时间:2013-02-17 23:17:23

标签: sqlite

我有一个包含开始/停止时间戳的sqlite表。我想创建一个查询,从那里返回总耗用时间。

现在我有一个SELECT(例如SELECT t,type FROM event WHERE t>0 AND (name='start' or name='stop) and eventId=xxx ORDER BY t),它返回一个如下所示的表:

+---+-----+
|t  |type |
+---+-----+
|  1|start|
| 20|stop |
|100|start|
|150|stop |
+---+-----+

在上述示例中生成总耗用时间将由(20-1)+(150-100) = 69

完成

我有一个想法是:我可以运行两个单独的查询,一个用于“开始”字段,一个用于“停止”字段,假设它们总是这样排列:

+---+---+
|(1)|(2)|
+---+---+
|  1| 20|
|100|150|
+---+---+

(1) SELECT t FROM EVENT where name='start' ORDER BY t
(2) SELECT t FROM EVENT where name='stop' ORDER BY t

然后简单(我认为!)只是总结差异。唯一的问题是,我不知道我是否可以加入两个单独的查询:我熟悉将每行与每一行组合起来的连接,然后消除那些与某些条件不匹配的连接。在这种情况下,标准是行索引是相同的,但这不是数据库字段,它是两个单独选择的输出中结果行的顺序 - 没有任何数据库字段我可以使用确定这一点。

或者还有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我不使用SQLite,但这可能有用。让我知道。

SELECT SUM(CASE WHEN type = 'stop' THEN t ELSE -t END) FROM event

这假设类型中唯一的值是start / stop。