用sql将一列日期数据处理成一行数据,连续日期用下划线连接,不连续用,连接
时间: 2023-12-16 07:06:32 浏览: 72
单元三:限定所选择的数据行LIKE运算符完美版资料.pptx
假设你有一个名为`dates`的表格,其中有一个名为`date`的日期列,你可以使用如下SQL语句将其处理成一行数据:
```
SELECT GROUP_CONCAT(date_range SEPARATOR ',') AS date_ranges
FROM (
SELECT
IF(DATEDIFF(date, @prev_date) = 1, CONCAT(@date_range, '_', date), date) AS date_range,
@prev_date := date,
@date_range := IF(DATEDIFF(date, @prev_date) = 1, @date_range, date)
FROM dates, (SELECT @prev_date := NULL, @date_range := NULL) AS init
ORDER BY date
) AS ranges
```
这个SQL语句使用了MySQL中的`GROUP_CONCAT`函数,将处理后的日期数据拼接成一行。它还使用了MySQL中的用户变量,在处理日期数据时记录上一个日期和当前日期的信息。具体来说,它将连续的日期使用下划线连接,不连续的日期使用逗号连接。例如,如果原始数据中有这样一组日期:
```
2022-01-01
2022-01-02
2022-01-03
2022-01-05
2022-01-06
```
那么处理后的结果将是这样的:
```
2022-01-01_2022-01-03,2022-01-05_2022-01-06
```
阅读全文