SQLite查询对列进行分组

时间:2017-03-16 09:06:26

标签: sqlite

我想编写一个查询来根据第三列对我的两列进行分组并在一行中显示结果,如下所示在SQLite CAn任何人都指导我如何为这样的结构编写查询 表结构

CREATE TABLE `Table1` (
`Variable_col`  TEXT,
`TimeComes_Col` datetime,
`TimeGoes_Col`  datetime)

虚拟数据

Insert Into Table1 Values('var1','2017-03-16 10:00:00',''),('var1','','2017-03-16 10:05:00'),('var1','2017-03-16 10:10:00',''),('var2','2017-03-16 10:15:00','')

尝试到目前为止但没有得到想要的结果

WITH RECURSIVE cte1 as(select Variable_Col,TimeComes_Col, (SELECT COUNT()+1 FROM ( SELECT DISTINCT TimeComes_Col FROM Table1 AS t WHERE TimeComes_Col < Table1.TimeComes_Col )) as rn from Table1 where TimeComes_Col <> ''),

cte2 as(选择TimeGoes_Col,(SELECT COUNT()+ 1 FROM(SELECT DISTINCT TimeGoes_Col FROM Table1 AS t WHERE TimeGoes_Col&lt; Table1.TimeGoes_Col) )如表1所示,其中TimeGoes_Col&lt;&gt; &#39;&#39;)从cte1选择Variable_Col,TimeComes_Col,TimeGoes_Col,在a.rn = b.rn上选择左连接cte2 b

enter image description here

1 个答案:

答案 0 :(得分:0)

如果这些总是以5分钟为增量

SELECT t1.variable_col, t1.timecomes_col, t2.timegoes_col
FROM Table1 t1 
LEFT OUTER JOIN Table1 t2 ON
    t1.variable_col = t2.variable_col 
    AND t1.timecomes_col < t2.timegoes_col AND
    t2.timegoes_col < DATETIME(t1.timecomes_col, '+6 minutes')

在这个和其他更传统的SQL无法满足您的需求时添加一些示例数据可能会有所帮助。我假设您正在考虑使用窗口函数来解决问题,但是根据您的示例数据,似乎并不需要它们。

相关问题