我需要根据fkId
,DateFrom
对记录进行分组,还需要选择TimeFrom
第一条记录和TimeTo
从第二条记录>
pkID | fkID | DateFrom | TimeFrom | TimeTo
104 | 20 | 05-02-2019 00:00 | 12:00 | 23:59
105 | 20 | 06-02-2019 00:00 | 00:00 | 12:00
106 | 20 | 06-02-2019 00:00 | 12:00 | 23:59
107 | 20 | 07-02-2019 00:00 | 00:00 | 12:00
常规GROUP BY不允许将TimeFrom和TimeTo包括在选择查询中。
数据就是这样,日期1行或2行,1行仅表示AM或PM,2行表示AM和PM两者。
SELECT fkID, DateFrom --, TimeFrom
FROM table
GROUP BY fkID, DateFrom
所以所需的输出将是这样:
fkID | DateFrom | TimeFrom | TimeTo
20 | 05-02-2019 00:00 | 12:00 | 23:59
20 | 06-02-2019 00:00 | 00:00 | 23:59
20 | 07-02-2019 00:00 | 00:00 | 12:00
因此对于日期06-02-2019 00:00
,将dateFrom和DateTo合并为一行。
答案 0 :(得分:3)
如果对应于同一组的间隔没有间隔和重叠,则可以简单地使用GROUP BY
。我假设TimeFrom
和TimeTo
是Time
数据类型。
select fkID, dateFrom,
min(TimeFrom),
max(TimeTo)
from your_table
group by fkID, dateFrom
答案 1 :(得分:2)
通过放置{% for user in location %}
<h5><b>{{ user.first_name }} {{ user.last_name }}</b></h5>
{% endfor %}
子句,您可以将group by
放在max
中,例如
TimeTo
它将为您提供所需的输出。