Я использую SQLite, и я довольно новичок в SQL в целом. У меня возникла проблема с запросом, при котором мои новые операторы COUNT возвращают одинаковые номера, когда их не должно быть. Когда я запускаю два подзадача отдельно, я получаю правильные результаты, поэтому я знаю, что я просто заполняю их вместе. Любые предложения о том, как сделать это менее уродливым, также очень ценятся!Множество COUNT в запросе, возвращающем неверные результаты
Я использую следующий очень некрасиво оператор выбора:
SELECT BATCH_ID, PROGRAM_ID,
COUNT((SELECT ID FROM PARTS
WHERE DROPSHIP_ONLY = 'No'
AND OBSOLETE = 'No'
AND DISCONTINUED = 'No'))
AS 'Active Parts',
COUNT((SELECT ID FROM PARTS
WHERE DROPSHIP_ONLY = 'No'
AND OBSOLETE = 'No'
AND DISCONTINUED = 'No'
AND ON_HAND > 0
AND ON_HAND > SAMPLE_LEVEL))
AS 'Instock Parts'
FROM PARTS
GROUP BY BATCH_ID, PROGRAM_ID;
Он возвращает это:
BATCH_ID PROGRAM_ID Active Parts Instock Parts
201311 Vendor1 1390 1390
201311 Vendor2 1433 1433
201311 Vendor3 213 213
201311 Vendor4 3595 3595
201311 Vendor5 98 98
201311 Vendor6 3 3
Ожидаемый результат для активных частей:
201311 Vendor1 1144
201311 Vendor2 1380
201311 Vendor3 100
201311 Vendor4 2276
201311 Vendor5 98
201311 Vendor6 3
Ожидаемый результат для Запасные части:
201311 Vendor1 15
201311 Vendor2 1272
201311 Vendor3 45
201311 Vendor4 1767
201311 Vendor5 97
201311 Vendor6 3
Спасибо за любую помощь или предложения!
Святого человека, который был быстро. Похоже, что он работает правильно! Не могли бы вы объяснить гнездо AND после предложения WHERE, а именно, почему ему нужно DROPSHIP_ONLY = 'Нет', вложенное в это предложение AND, когда оно уже указано в начале предложения WHERE? Спасибо! – Methonis
это была опечатка. это должно быть 'DISCONTINUED = 'No''. –
Хорошо, спасибо за разъяснение! – Methonis