Проблема подзапроса Sql с суммированием вложенных полей

#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 запроса или какое-либо другое решение?