DB2, как найти двух пользователей, которые активны в одну и ту же дату - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь найти двух пользователей, которые были активны в одну и ту же дату, у меня есть код, который запускается

select place,date,user, artNumber

from jobs
where user in (

select user2

from userActive

where date between 20180101 and 20181011 and user2 = 'nightJob')

Это просто дает мне знать, когда nightJob был активен, как я могу сопоставить результатвернуться, который другой пользователь был активным в то же время, что и nightJob, я бы с удовольствием объяснил sulotion, потому что я пытаюсь научиться.

Я звучу как amatur и mabye, но я могу объяснитьмой код, я бы его написал, но мне просто нужно проверить, правильно ли я его понимаю.Я не хочу фиксированных результатов, его более ста пользователей, но nightJob всегда является таким конкретным именем пользователя.

желаемый результат

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Мое решение добавит еще два поля к выводу, и я дам вам выполнить команду SQL.Я работаю в Oracle, а не в DB2, но, думаю, я могу помочь.Во-первых, предполагая, что ваше поле даты определяет значения даты для секунды, вам нужно использовать функцию для изменения даты: to_char (date, 'YYYYMMDD').Кроме того, вы хотите, чтобы два (или более) пользователя работали одновременно, поэтому я включаю второго пользователя в вывод.Кроме того, мои результаты покажут, что даты из двух таблиц совпадают.Мой запрос может вернуть дубликаты.Проверьте результаты и при необходимости измените запрос.

Select jobs.place, to_char(jobs.date, 'YYYYMMDD'), jobs.user, jobs.artNumber,
    UserActive.user2, to_char(UserActive.date, 'YYYYMMDD')
    from jobs
    join UserActive
      on (to_char(jobs.date, 'YYYYMMDD'), to_char(UserActive.date, 'YYYYMMDD')
   where jobs.user <> UserActive.user2
     and /* put more filters here, if desired */
;
0 голосов
/ 11 октября 2018

Попробуйте ниже

select place,date,user, artNumber
from jobs
where user in (
select user2
from userActive where jobs.user=userActive.user2 and
date between 20180101 and 20181011 and user2 = 'nightJob')
...