如何组合SQL中单个列的值

时间:2015-07-07 05:39:13

标签: sql-server-2008

我的表格格式如下。

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

1 个答案:

答案 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')); }); 与其结合。