#sql #sum #subquery
#sql #сумма #подзапрос
Вопрос:
Я пытаюсь заставить подзапрос работать, но я не могу пройти мимо подзапроса, возвращающего более 1 значения. это не разрешено. Независимо от того, как я пытаюсь переписать этот запрос, я не могу заставить эту область суммы работать. Я только новичок в подзапросах, поэтому любая помощь, которую вы могли бы предоставить, была бы отличной, запрос в настоящее время выглядит как
SELECT dbo.h.DateDelivery, dbo.h.DateInProduction, dbo.h.JobNumber, dbo.h.JobKeyID, dbo.h.QuantityFrames, dbo.h.QuantityGlass, dbo.h.QuantityPanels,
dbo.r.Description, dbo.r.DivisionID, dbo.r.rKeyID, (SELECT SUM(t.QtyPacks) AS packqty
FROM t INNER JOIN
h ON t.JobKeyID = h.JobKeyID
WHERE (t.StageID = 10) OR
(t.StageID = 20) OR
(t.StageID = 28)
GROUP BY t.JobKeyID)
FROM dbo.h INNER JOIN
dbo.r ON dbo.h.rKeyID = dbo.r.rKeyID
WHERE (NOT (dbo.r.rKeyID IN (1, 50, 81, 91)))
Комментарии:
1. Правильно отформатируйте свой код. Никто не собирается это читать.
2. Также пометьте свой вопрос своей СУБД.
3. » но я не могу пройти мимо подзапроса, возвращающего более 1 значения». Запустите только свой подзапрос. Возвращает ли он более 1 значения? Если да, то исправьте это.
Ответ №1:
Вы не указали, какую СУБД вы используете, однако в общем скалярное выражение подзапроса должно возвращать ровно одно значение столбца из одной строки (см., Например, Документацию Oracle).
В вашем коде есть a GROUP BY t.JobKeyID
, который может привести к тому, что подзапрос вернет более одной строки.
Комментарии:
1. Спасибо, я использую ms sql. Мой подзапрос возвращает результат для каждого jobkeyid, который совпадает с основным запросом есть ли способ связать 2 запроса или какое-либо другое решение?