Выберите Столбцы, отличные от Столбцы, включенные в группу по выражению на основе условия - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно сгруппировать записи на основе fkId, DateFrom, но также нужно выбрать TimeFrom 1-ую запись и TimeTo Из 2-й записи

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

GeneralGROUP 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 в одну строку.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Положив выражение group by, вы можете поместить max в TimeTo, например

select fkID ,DateFrom ,TimeFrom ,max(TimeTo) 
from <tablename> 
group by fkID ,DateFrom

. Это даст вам желаемый результат.

0 голосов
/ 07 февраля 2019

Если интервалы, соответствующие одной и той же группе, не имеют пропусков и перекрытий, то вы можете просто использовать GROUP BY.Я предполагаю, что TimeFrom и TimeTo имеют тип данных Time.

select fkID, dateFrom,
       min(TimeFrom),
       max(TimeTo)
from your_table
group by fkID, dateFrom
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...