-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Вопрос по запросу

Пятница, 16 Декабря 2016 г. 16:07 + в цитатник
Здравствуйте!

Есть исходная таблица
Код ТТ Общее SKU SKU Кол SKU в Общем SKU Процент возврата
ТТ569 SKU1/SKU2 SKU1 2 0.3
ТТ569 SKU1/SKU2 SKU2 2 0.2
ТТ569 SKU3/SKU4 SKU3 2 0
ТТ569 SKU3/SKU4 SKU4 2 0.23
ТТ569 SKU5 SKU5 1 0.2
ТТ569 SKU6/SKU7 SKU6 2 0
ТТ569 SKU6/SKU7 SKU7 2 0
ТТ569 SKU10/SK11 SKU10 2 0.42
ТТ569 SKU10/SK11 SKU11 2 0.42

Тут логика такая, что у Общего SKU может быть один или больше SKU.

Нужен такой результат
Код ТТ Общее SKU SKU Кол SKU в Общем SKU Процент возврата Результат
ТТ569 SKU1/SKU2 SKU1 2 0.3
ТТ569 SKU1/SKU2 SKU2 2 0.2 Да
ТТ569 SKU3/SKU4 SKU3 2 0 Да
ТТ569 SKU3/SKU4 SKU4 2 0.23
ТТ569 SKU5 SKU5 1 0.2
ТТ569 SKU6/SKU7 SKU6 2 0
ТТ569 SKU6/SKU7 SKU7 2 0 Да
ТТ569 SKU10/SK11 SKU10 2 0.42
ТТ569 SKU10/SK11 SKU11 2 0.42 Да

То есть для каждого общего SKU, где количество SKU в Общем SKU больше 1, нужно в поле "Результат" отметить "Да" в те SKU c наименьшим процентом возврата.

Для решения такой задачи написал такой запрос в Excel-файле
+
SELECT
	Т1.`Код ТТ`,
	Т1.`Общее SKU`,
	Т1.`SKU`,
	Т1.`Кол SKU в Общем SKU`,
	Т1.`Процент возврата`,
	Т2.`Минимальный процент возврата`,	
	IIF (Т1.`Кол SKU в Общем SKU` > 1 AND Т1.`Процент возврата` = Т2.`Минимальный процент возврата` , 'Да', ) AS `Результат`
FROM
	`Исходные данные$` AS Т1
LEFT JOIN
	(SELECT
		Тв1.`Код ТТ`,
		Тв1.`Общее SKU`,		
		MIN(Тв1.`Процент возврата`)	AS `Минимальный процент возврата`
	FROM
		`Исходные данные$` AS Тв1
	GROUP BY
		Тв1.`Код ТТ`,
		Тв1.`Общее SKU`) AS Т2		
ON
	Т1.`Код ТТ` = Т2.`Код ТТ`
	AND
	Т1.`Общее SKU` = Т2.`Общее SKU`

И получается такой результат

Код ТТ Общее SKU SKU Кол SKU в Общем SKU Процент возврата Минимальный процент возврата Результат
ТТ569 SKU1/SKU2 SKU1 2 0.3 0.3
ТТ569 SKU1/SKU2 SKU2 2 0.2 0.2 Да
ТТ569 SKU3/SKU4 SKU3 2 0 0 Да
ТТ569 SKU3/SKU4 SKU4 2 0.23 0.23
ТТ569 SKU5 SKU5 1 0.20.2
ТТ569 SKU6/SKU7 SKU6 2 0 0 Да
ТТ569 SKU6/SKU7 SKU7 2 0 0 Да
ТТ569 SKU10/SK11 SKU10 2 0.42 0.42 Да
ТТ569 SKU10/SK11 SKU11 2 0.42 0.42 Да


Но тут не учитывается один фактор: если в одном общем SKU, например, "SKU10/SKU11" проценты возврата одинаковые. И в результате ставятся лишние "Да".

Если одинаковые, то в поле "Результат" указывает "Да" в одной любой внутри Общего SKU. Можно так - кроме первой строки внутри Общего SKU.

Подскажите, как в запросе это учесть? Есть то, что еще не учел?

http://www.sql.ru/forum/1243008/vopros-po-zaprosu


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку