Перейти к содержимому


shurikvz

Регистрация: 01 окт 2009
Offline Активность: Сегодня, 17:52
****-

Мои сообщения

В теме: вопрос по хитрому запросу

Сегодня, 17:51

Так вроде работает:

Цитата

ВЫБРАТЬ
"А" КАК Продавец,
ДАТАВРЕМЯ(2012, 5, 23, 17, 0, 0) КАК НачалоРаботы,
8 КАК Часы1,
ДАТАВРЕМЯ(2012, 5, 23, 0, 0, 0) КАК ДатаРегистрации
ПОМЕСТИТЬ Табели

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"Б",
ДАТАВРЕМЯ(2012, 5, 23, 16, 0, 0),
2,
ДАТАВРЕМЯ(2012, 5, 23, 0, 0, 0)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Табели.Продавец,
Табели.НачалоРаботы,
Табели.Часы1,
Табели.ДатаРегистрации,
ВЫБОР
КОГДА ЧАС(Табели.НачалоРаботы) + Табели.Часы1 > 23
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьПереход
ПОМЕСТИТЬ ЗаписиСПризнакомПерехода
ИЗ
Табели КАК Табели
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаписиСПризнакомПерехода.Продавец,
ЧАС(ЗаписиСПризнакомПерехода.НачалоРаботы) КАК ЧасНачалаРаботы,
ЧАС(ЗаписиСПризнакомПерехода.НачалоРаботы) + ЗаписиСПризнакомПерехода.Часы1 КАК ЧасОкончанияРаботы,
ЗаписиСПризнакомПерехода.ДатаРегистрации
ИЗ
ЗаписиСПризнакомПерехода КАК ЗаписиСПризнакомПерехода
ГДЕ
(НЕ ЗаписиСПризнакомПерехода.ЕстьПереход)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ЗаписиСПризнакомПерехода.Продавец,
ЧАС(ЗаписиСПризнакомПерехода.НачалоРаботы),
23,
ЗаписиСПризнакомПерехода.ДатаРегистрации
ИЗ
ЗаписиСПризнакомПерехода КАК ЗаписиСПризнакомПерехода
ГДЕ
ЗаписиСПризнакомПерехода.ЕстьПереход

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ЗаписиСПризнакомПерехода.Продавец,
0,
ЧАС(ЗаписиСПризнакомПерехода.НачалоРаботы) + ЗаписиСПризнакомПерехода.Часы1 - 24,
ДОБАВИТЬКДАТЕ(ЗаписиСПризнакомПерехода.ДатаРегистрации, ДЕНЬ, 1)
ИЗ
ЗаписиСПризнакомПерехода КАК ЗаписиСПризнакомПерехода
ГДЕ
ЗаписиСПризнакомПерехода.ЕстьПереход

З.Ы. От окончания работы надо наверно все же секунду отнимать, или в соединении условие на "час окончания" ставить просто меньше без равно. Потому что получится если человек пришел в 17:00 и отработал 2 часа, ЧасОкончания будет 19:00, при соединении с продажами ему попадут продажи за 17:00, 18:00 и 19:00. Но 19:00 там ведь быть не должно.

В теме: вопрос по хитрому запросу

Сегодня, 17:21

Чет подумал - хрень я какую-то написал, так работать не будет.

В теме: вопрос по хитрому запросу

Сегодня, 16:36

Цитата


ВЫБРАТЬ
КОЛИЧЕСТВО(Табели.Продавец) КАК Работник,
ВЫБОР КОГДА ЧАС(Табели.НачалоРаботы) > (ЧАС(Табели.НачалоРаботы) + Табели.Часы1) ТОГДА
0
ИНАЧЕ
ЧАС(Табели.НачалоРаботы) КОНЕЦ КАК ЧасНачалаРаботы,
ВЫБОР КОГДА ЧАС(Табели.НачалоРаботы) > (ЧАС(Табели.НачалоРаботы) + Табели.Часы1) ТОГДА
ЧАС(Табели.НачалоРаботы) + Табели.Часы1
ИНАЧЕ
23
КАК ЧасОкончанияРаботы,
ВЫБОР КОГДА ЧАС(Табели.НачалоРаботы) > (ЧАС(Табели.НачалоРаботы) + Табели.Часы1) ТОГДА //час окончания меньше часа начала, т.е. смена перешагнула 24:00
ДОБАВИТЬКДАТЕ(Табели.Ссылка.ДатаРегистрации, ДЕНЬ, 1)
ИНАЧЕ
Табели.Ссылка.ДатаРегистрации КОНЕЦ
КАК ДатаРегистрации

В теме: вопрос по хитрому запросу

Сегодня, 16:11

gosn1ck, думаю там в выборку дополнения внести надо, чтобы пересчитывалась дата регистрации, если время работы проходит через полночь, т.е. навскидку что-то вроде такого:

Цитата

ВЫБРАТЬ
КОЛИЧЕСТВО(Табели.Продавец) КАК Работник,
ЧАС(Табели.НачалоРаботы) КАК ЧасНачалаРаботы,
ЧАС(Табели.НачалоРаботы) + Табели.Часы1 КАК ЧасОкончанияРаботы,
ВЫБОР КОГДА ЧАС(Табели.НачалоРаботы) > (ЧАС(Табели.НачалоРаботы) + Табели.Часы1) ТОГДА //час окончания меньше часа начала, т.е. смена перешагнула 24:00
ДОБАВИТЬКДАТЕ(Табели.Ссылка.ДатаРегистрации, ДЕНЬ, 1)
ИНАЧЕ
Табели.Ссылка.ДатаРегистрации КОНЕЦ
КАК ДатаРегистрации

В теме: вопрос по хитрому запросу

Сегодня, 15:38

gosn1ck я пока не совсем понял затруднение. Ведь есть не только час продажи, но и дата продажи:

Цитата

магазин, дата продажи, час продажи, количество продажи
магазин, дата продажи, час начала работы, час окончания работы, количество работников.
Почему нельзя соединить еще и по НАЧАЛОПЕРИОДА(дата продажи, день)? В чем там подвох?