Я пытаюсь вернуть строки, в которых «SKU_ID» больше 1 при подсчете в подзапросе.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю подзапрос независимо, он возвращает строки, как и ожидалось. Однако, когда я использую in как часть предложения where, я получаю следующую ошибку:
ORA-01722: invalid number 01722.
*Cause: The specified number was invalid.
*Action: Specify a valid number.00000 - "invalid number"
Я попытался сделать следующее...
SELECT inventory.sku_id, inventory.location_id, inventory.qty_on_hand, inventory.tag_id, inventory.full_pallet, sku_config.ratio_1_to_2 as "FULL QTY"
FROM inventory
JOIN sku_sku_config ON inventory.sku_id = sku_sku_config.sku_id
JOIN sku_config ON sku_sku_config.config_id = sku_config.config_id
WHERE inventory.sku_id in
(SELECT count(*)
FROM inventory
JOIN sku_sku_config ON inventory.sku_id = sku_sku_config.sku_id
JOIN sku_config ON sku_sku_config.config_id = sku_config.config_id
WHERE zone_1 NOT LIKE 'PROD' AND lock_status = 'UnLocked' AND full_pallet = 'N'
GROUP BY inventory.sku_id
HAVING count(*) >= 1)
Я предполагаю, что вы хотите сравнить sku_id
s с sku_id
s, а не со счетом. Так:
WHERE inventory.sku_id in
(SELECT i2.sku_id
FROM inventory i2 JOIN
sku_sku_config ssc
ON i2.sku_id = ssc.sku_id JOIN
sku_config sc
ON ssc.config_id = sc.config_id
WHERE zone_1 NOT LIKE 'PROD' AND
lock_status = 'UnLocked' AND
full_pallet = 'N'
GROUP BY i2.sku_id
HAVING count(*) > 1
)
Обратите внимание, что я изменил сравнение на > 1
, а не >= 1
, основываясь на описании проблемы.
Спасибо Гордон! Я был довольно близок, поскольку проблема заключалась в подсчете (*) в операторе выбора. Все работало.