Мой маленький продуктовый магазин сотрудничает с третьей стороной, чтобы принимать онлайн-заказы. Я сделал лист Excel, который запрашивает нашу базу данных продукта для получения информации о продукте, и я передаю эти данные в другой лист с поддержкой макросов, который делает тяжелую работу и генерирует .CSV, который я загружаю каждую неделю.Определите, какая продажа POS имеет преимущество. Следующее логическое дерево в Sybase SQL Anywhere 10
То, что я пытаюсь сделать сейчас, это получить текущую и будущую информацию о продажах, чтобы мы могли их рекламировать. Продажи создаются в нашей POS, помещая их в группы, называемые «рабочими листами». Усложняющим фактором является то, что продукт может существовать сразу на нескольких листах, а также используется логическое дерево, чтобы определить, какие из листов будут влиять на цену сканирования в любой момент времени.
Два атрибута, которые определяют приоритет, являются «приоритетом» и «датой совершены».
- Три приоритета: высокий, средний и низкий представлены как 1, 2 и 3 соответственно. Листы с более высоким приоритетом всегда будут переопределять листы с более низким приоритетом в течение всего срока их службы.
- Если рабочие листы имеют одинаковые приоритеты, то последнее, что было совершено последним, имеет приоритет.
Таким образом, учитывая данные, что выглядит следующим образом:
item_id worksheet_name priority date_committed sale_start_date sale_end_date sale_price
011259904209 A 2 2016-06-22 09:21:09.041 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 2.0000
074682105322 B 2 2016-06-22 09:49:31.722 2016-07-20 00:00:00.000 2016-08-03 11:00:00.000 2.0000
074682105322 C 2 2016-06-22 08:57:04.641 2016-07-19 00:00:00.000 2016-08-03 16:00:00.000 2.0000
042563013660 A 2 2016-06-22 09:21:09.048 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 3.9900
042563013660 D 1 2016-06-25 14:03:33.499 2016-06-29 00:00:00.000 2016-07-05 23:59:59.000 2.9900
042563013660 E 2 2016-06-22 08:49:13.515 2016-06-28 00:00:00.000 2016-07-20 16:00:00.000 3.9900
073360772054 A 2 2016-06-22 09:21:09.114 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 3.9900
073360772054 B 2 2016-06-22 09:49:31.831 2016-07-20 00:00:00.000 2016-08-03 11:00:00.000 3.9900
073360772054 E 2 2016-06-22 08:49:13.520 2016-06-28 00:00:00.000 2016-07-20 16:00:00.000 3.9900
073360772054 C 2 2016-06-22 08:57:04.649 2016-07-19 00:00:00.000 2016-08-03 16:00:00.000 3.9900
012993221010 A 2 2016-06-22 09:21:09.110 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 3.3900
012993221010 B 2 2016-06-22 09:49:31.828 2016-07-20 00:00:00.000 2016-08-03 11:00:00.000 3.3900
012993221010 D 1 2016-06-25 14:03:33.502 2016-06-29 00:00:00.000 2016-07-05 23:59:59.000 2.9900
012993221010 E 2 2016-06-22 08:49:13.517 2016-06-28 00:00:00.000 2016-07-20 16:00:00.000 3.3900
012993221010 C 2 2016-06-22 08:57:04.646 2016-07-19 00:00:00.000 2016-08-03 16:00:00.000 3.3900
Я хочу, чтобы получить это:
Run on 6/27
item_id worksheet_name sale_start_date sale_end_date sale_price
011259904209 A 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 2.0000
074682105322 C 2016-07-19 00:00:00.000 2016-07-20 00:00:00.000 2.0000
042563013660 E 2016-06-28 00:00:00.000 2016-06-29 00:00:00.000 3.9900
073360772054 E 2016-06-28 00:00:00.000 2016-06-29 00:00:00.000 3.9900
012993221010 E 2016-06-28 00:00:00.000 2016-06-29 00:00:00.000 3.9900
Run on 6/29
item_id worksheet_name sale_start_date sale_end_date sale_price
011259904209 A 2016-06-29 00:00:00.000 2016-07-20 11:00:00.000 2.0000
074682105322 C 2016-07-19 00:00:00.000 2016-07-20 00:00:00.000 2.0000
042563013660 D 2016-06-29 00:00:00.000 2016-07-05 23:59:59.000 2.9900
073360772054 A 2016-06-29 00:00:00.000 2016-07-19 00:00:00.000 3.9900
012993221010 D 2016-06-29 00:00:00.000 2016-07-05 23:59:59.000 2.9900
бонусных баллы для объединения перекрывающихся периодов продаж отражают восприятие покупателя, но это не обязательно.
Как получить этот результат с помощью SQL? Наши продажи работают со среды по вторник, и я идеально генерирую файл данных на предстоящую неделю в среду днем или в четверг утром после того, как мы закончим наши недельные изменения цен.
У нас есть десятки тысяч продуктов в файле.
Here's a graphical representation of the worksheet priorities per day
Это для SQL Anywhere 10, и работает SELECT @@VERSION
говорит мне 12.0.1.3967
Спасибо. Это работает достаточно хорошо, чтобы я принял ответ, но он оставляет пробел, когда другой лист с более высоким приоритетом начинается в середине другого периода рабочего листа. Наши продажи в основном начинаются в тот же день недели, так что это не большая сделка. Я думаю, что наши выходные продажи просто должны быть видны только для покупателей в магазине. Кроме того, я предполагаю, что для полного решения потребуется намного больше обработки. – picobit
Что бы я сделал в этом случае, напишите второй запрос, который будет выглядеть специально для ваших исключений. Мне кажется, что этот запрос покроет вас за 90% ваших продаж, так что вам просто нужен какой-то способ снять свои исключения. –