Я работаю в распределительном центре в Великобритании, и недавно я начал использовать sql-запросы для доступа к данным непосредственно из db.Sql query - Борьба за запись/структуру
Мне было поручено написать запрос, который дает общее количество мест, которые мы имеем в каждом проходе (из таблицы locn_hdr), и общее количество мест emtpy в каждом из этих проходов. I'vr удалось получить всю информацию, которая мне нужна, но с помощью двух разных запросов. Я изо всех сил, чтобы объединить их в нижеприведенных заголовки
КОРИДОР - количество мест - количество пустых мест
два запроса я находятся ниже
Графа мест
select AISLE, COUNT(AISLE)
from LOCN_HDR LH
where LH.LOCN_CLASS = 'A'
and BAY >= '0030'
AND BAY <= '0230'
AND PICK_DETRM_ZONE LIKE 'HG%'
AND LH.AISLE <= 'QA'
group by aisle
Order by aisle;
Количество пустот
SELECT aisle, COUNT(dsp_locn)
FROM locn_hdr lh
WHERE lh.locn_class = 'A'
AND bay >= '0030'
AND bay <= '0230'
AND pick_detrm_zone LIKE 'HG%'
AND lh.aisle <= 'QA'
AND NOT EXISTS
(SELECT 1
FROM wm_inventory wi
WHERE wi.location_id = lh.locn_id
AND wi.on_hand_qty > '0')
GROUP BY aisle
ORDER BY aisle;
В идеале indont просто хочет получить ответ с sql re написанным. Я хочу понять, как я могу сделать что-то подобное себе в будущем.
Спасибо заранее, ребята! Извините, если я не получил достаточную информацию, иди спокойно на меня, я новичок!
редактировать
Привет, спасибо за помощь в первую очередь! Это ценно. Тем не менее, он не работает так, как он мне нужен. количество столбцов (lh.aisle) подсчитывает количество пустых мест, а не общее количество мест в проходе. У меня было немного изменить SQL, потому что я получаю сообщения об ошибках, поэтому я временно использовал
SELECT lh.AISLE, COUNT(lh.AISLE), COUNT(wi.location_id) -- count(lh.aisle) gives me the total empty locatins. Count(wi.location_id) gives me nothing...
FROM LOCN_HDR lh
LEFT OUTER JOIN wm_inventory wi ON wi.location_id = lh.locn_id AND wi.on_hand_qty > '0'
WHERE lh.LOCN_CLASS = 'A'
AND lh.BAY BETWEEN '0030' AND '0230'
AND lh.PICK_DETRM_ZONE LIKE 'HG%'
AND lh.AISLE <= 'QA'
AND wi.location_id IS NULL -- where there is no matching record for lh.locn_id with a quantity > 0
GROUP BY lh.AISLE
ORDER BY lh.AISLE;
Это дало мне количество пустых мест, которые является фантастическим. Но у меня нет счета общего количества мест (пусто или нет).
Больше идей будет оценено!
Это похоже на «SQL Server», но было бы полезно добавить тег к вопросу, указывающему *, который * DB вы используете. – levelonehuman
@levelonehuman: это на самом деле довольно стандартный SQL –
Несвязанный, но: вы не должны сравнивать строки и числа, такие как 'wi.on_hand_qty> '0'' ''0'' - это строковая константа, а не число. '0' - это номер –