Подсчитать SKU и вернуть строки, где QTY < Full QTY?

Я пытаюсь вернуть строки, в которых «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)
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что вы хотите сравнить sku_ids с sku_ids, а не со счетом. Так:

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, основываясь на описании проблемы.

Спасибо Гордон! Я был довольно близок, поскольку проблема заключалась в подсчете (*) в операторе выбора. Все работало.

Kay 09.04.2019 13:46

Другие вопросы по теме