0

是否可以使用 sql (mysql) 为报表展平数据库表。我可以用 php 做,但如果我能在 sql 中做的更简单,那就太好了。

例子:

1) 输入:原始数据 - 每个客户/开始和结束时间一行

cust   start   end
8000   0900    1000
8000   1000    1100
8000   1200    1300
9000   0900    1000
9000   1000    1100

2) 所需输出:数据展平 - 每个客户一行,所有开始和结束时间都在同一行

cust  all related start-end times
----  ------------------------------
8000  0900-1000 1000-1100 1200-1300
9000  0900-1000 1000-1100 
4

2 回答 2

1

这就是您要查找的内容:

select cust, group_concat(concat(start,'-',end) SEPARATOR ' ')
from mytable
group by cust

工作小提琴

于 2013-05-07T18:14:42.670 回答
0

SQL 查询必须具有固定数量的列。这对您的情况造成了问题,因为您不知道需要多少列。

一种解决方法是将所有结果放在一列中。这会产生类似“090-1000,1000-1100,1200-1300”的结果。你可以这样做group_concat()

select cust,
       group_concat(concat(start, '-', end) separator ', ' order by start) as StartEnds
from t
group by cust
于 2013-05-07T18:16:09.143 回答