У меня есть следующие данные в таблице с именем TABLE
:
EDIT: добавлена еще пара строк с Characterid: 26052013030101
, которая была пропущена.
/------------------------------------------------------------------------\ | CharacterID | EVENTTYPE | TRIGGERTIME | |----------------------+-------------------+-----------------------------| | 11052016190101 | START | 2017-06-01 13:35:38.000 | | 11052016190101 | END | 2017-01-06 08:05:18.620 | | 01012016170101 | START | 2017-06-01 13:33:18.000 | | 01012016170101 | Player Left | 2017-06-01 13:35:21.000 | | 01012016170101 | END | 2017-06-01 13:38:22.000 | | 26052013030101 | START | 2017-06-01 13:35:39.000 | | 26052013030101 | RESET | 2017-06-01 13:35:50.000 | \------------------------------------------------------------------------/
Я написал этот запрос, чтобы получить разницу во времени на основе значений START
и END
EVENTTYPE
:
SELECT
cp_start.characterid,
MAX(cp_start.triggertime) AS start_time,
cp_end.triggertime AS end_time,
datediff(second, MAX(cp_start.triggertime), cp_end.triggertime)
FROM
TABLE AS cp_start
INNER JOIN
TABLE AS cp_end ON (
cp_start.CharacterID= cp_end.CharacterID
AND
cp_end.triggertime > cp_start.triggertime)
WHERE cp_start.eventtype = 'START'
AND cp_end.eventtype = 'END'
GROUP BY cp_start.characterid, cp_Start.TriggerTime, cp_end.TriggerTime
Однако мы хотим получить разницу во времени для вышеуказанного условия, то есть START
и END
, и если между START
и END
есть какое-либо другое событие, то нам нужно пропустить это конкретное CharacterID
.
В приведенном выше примере см. CharacterID = 01012016170101
, есть строка со строкой EVENTTYPE='Player Left'
между строками со значениями START
и END
для EVENTTYPE
, которые нужно пропустить или не учитывать.
EDIT: в приведенном выше примере characterid = 26052013030101 имеет только START, но не END. Он имеет RESET, что означает, что мы не должны учитывать это значение при отображении результата. КОНЕЦ РЕДАКТИРОВАНИЯ
Как мы этого добиваемся?
Во-вторых, есть ли простой способ добиться этого в POWERBI и отобразить счет и разницу во времени?
CharacterId
НАЧАТЬ и КОНЕЦ несколько раз? Или будет только одна запись наCharacterId
с каждым значениемEVENTTYPE
START и END? - person 3N1GM4   schedule 11.01.2017CharacterId
? Похоже, что тот, что показан как01012013010101
, на самом деле должен быть01012016170101
, как две строки под ним? - person 3N1GM4   schedule 11.01.2017CharacterId=11052016190101
является более ранней датой, чем дата НАЧАЛА для того же самогоCharacterId
? Или эти значения DateTime в формате гггг-дд-мм или что-то в этом роде? - person 3N1GM4   schedule 11.01.2017