0

我有一个称为日历表的表,其中包含年、月、周、日期和日等列。day 字段的值类似于 1,2,....7。

我想从中创建时间跨度。比如周一到周二(12:00),周二(12:00)到周三(17:00)。一周之内

为此,我正在编写一个类似的查询

SELECT 
    year, 
    week, 
    (SELECT date WHERE day = 1) AS st_date,
    (SELECT date WHERE day = 2) AS end_date 
FROM calendar 
GROUP BY year, week

我知道上面的语法不正确,请告诉是否有任何可能的语法可以解决这个问题?

实际的表定义是日文的,所以我用英文列名替换了它。这是一个不同于我们常规日历的日历表

在注册工具中,我想为用户创建时间段,在该时间段内用户不能注册。

我原来的表像:

日期 年 月 周 日
------------------------------------------
2013/06/19 34 06 44 3
2013/06/21 34 07 44 5
2013/06/24 34 07 45 1
2013/06/25 34 07 45 2
2013/06/26 34 07 45 3

我喜欢得到输出

年 周 A_reg_range_st A_reg_range_end B_reg_range_st B_reg_range_end
-----------------------------------------------------------
34 45 2013/06/24 00:00:00 2013/06/25 12:00:00 2013/06/25 12:00:00 2013/06/26 17:00:00
4

1 回答 1

1
SELECT 
    year, 
    week, 
    CASE WHEN (day = 1) THEN date  AS st_date,
    CASE WHEN (day = 2) THEN date  AS end_date
FROM calendar 
GROUP BY year, week
于 2013-06-21T05:18:43.753 回答