我的表格格式如下。
BatchID BatchTime
1 10:00:00
2 13:00:00
3 16:00:00
4 19:00:00
我真正需要的是:
BatchID BatchTime
1 10:00:00 - 13:00:00
2 13:00:00 - 16:00:00
3 16:00:00 - 19:00:00
4 19:00:00 - 10:00:00
答案 0 :(得分:1)
假设您有连续的id
,您可以执行以下操作:
SELECT a.id,a.dt date_a, b.dt date_b FROM tbl a
INNER JOIN tbl b ON b.id=a.id % (SELECT MAX(id) FROM tbl) + 1
ORDER BY a.id
见这里:http://sqlfiddle.com/#!3/24791/6
但是,dt
时间id
不应随着WITH t AS (SELECT id,dt,ROW_NUMBER() OVER (ORDER BY dt) n FROM tbl)
SELECT a.id,a.dt date_a, b.dt date_b FROM t a
INNER JOIN t b ON b.n=a.n % (SELECT MAX(n) FROM t) + 1
ORDER BY a.n -- order by ascending times in table a
提升(顺便提一下也可能有差距),那么以下内容仍然有效:
ROW_NUMBER()
见这里:http://sqlfiddle.com/#!3/74ed6/1
窗口函数t
将时间按升序排列在公用表表达式t
中。之后,两个%
以循环方式连接(在新生成的行号n
上使用模a.n % (SELECT MAX(n) FROM t) + 1
)。
t
将始终使用别名b
计算循环顺序中的“下一行”,以便将表<th><input type="checkbox" class="user"><th>
<td><input class="email" type="checkbox" value="<?php echo $object['email']; ?>"></td>
$(".user").click(function () {
$(".email").prop('checked', $(this).prop('checked'));
});
与其结合。