Отчет о посещаемости SQL Server 2008 за каждый день месяца

Эта ошибка произошла со мной, когда я случайно изменил структуру uikit. Удаление и повторное добавление каркаса uikit в бинарнике ссылок с библиотекой, очистка полученных данных и перезапуск xcode не сработали. Я не хочу удалять свой xcode, поэтому я попытался скопировать коды класса, которые я мог бы изменить из другого компьютера с помощью xcode, который отлично работает и вставляет его в мой. Это сработало!

1
задан marc_s 16 January 2019 в 14:58
поделиться

2 ответа

Вы близко. Вам просто нужно переместить фильтрацию на второй таблице в условие on:

select d.date, a.entry, a.exit
from DATES d left join
     ATTENDANCE a
     on d.date = a.when and a.name = 'Bob' 
where MONTH(d.date) = MONTH('2019-01-01') and
      YEAR(d.date) = YEAR('2019-01-01')

Примечания:

  • Использовать псевдонимы таблиц. Рекомендуемые псевдонимы - это сокращения имени таблицы.
  • Уточните все имена столбцов, чтобы вы знали, из какой они таблицы.
  • Для извлечения месяца из константы не требуется подзапрос.
  • Вы должны указать год и месяц.

Лучший способ написать условие даты:

where d.date >= '2019-01-01' and
      d.date < '2019-01-01' + interval 1 month

Это лучше, потому что оптимизатор может использовать индекс на date, если он доступен.

0
ответ дан Gordon Linoff 16 January 2019 в 14:58
поделиться

Вы можете использовать левое соединение и добавить условие фильтра в предложении ON

select d.date,a.entry,a.exit 
from DATES d 
left join ATTENDANCE a on a.date = d.date 
  and d.name = 'Bob' and MONTH (d.date) =  MONTH('2019-01-01')

, а затем использовать условие, примененное к столбцу, относящемуся к левой объединенной таблице, в качестве внутреннего соединения ... в этом случае переместить эти условия в п.

0
ответ дан scaisEdge 16 January 2019 в 14:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: