Выбор суммы нескольких строк в качестве значения в большем запросе

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть (рабочий) запрос, который выглядит немного как:

 SELECT DISTINCT
Convert(Varchar(150),O.PONumber) AS OrderID, 
CONVERT(varchar, O.OrderDateTime, 111) AS OrderDateTime, 
CONVERT(varchar, DATEADD(DAY, 14, O.OrderDateTime), 111) AS DateExpire, 
C.ClientID, 
C.ClientName, 
U.FirstName   ' '   U.LastName AS Name
...
  

Я хотел бы добавить к нему что-то вроде этого:

 (SELECT 
    SUM((
        SELECT 
            OI.UnitPoints
        FROM 
            Orders O INNER JOIN
            [dbo].[OrderItems] AS OI ON O.OrderID = OI.OrderID
        WHERE 
            O.PONumber = 72084))) AS TotalPoints
  

Значения, возвращаемые этим:

 SELECT 
    OI.UnitPoints
FROM 
    Orders O INNER JOIN
    [dbo].[OrderItems] AS OI ON O.OrderID = OI.OrderID
WHERE 
    O.PONumber = 72084
  

Выглядит так:

 UnitPoits
---------
1
2
  

Итак, в данном конкретном случае я ищу значение, присвоенное totalPoints равным 3 (1 2).

Комментарии:

1. Хорошо, в чем ваш вопрос или где вы застряли?

2. @user2989408 Ах. Извините. Было неясно. Мне нужна помощь в создании запроса (SELECT SUM(…)) AS totalPoints

3. Переместите часть суммы вашего запроса внутрь SELECT , потому что вам нужна сумма столбца, как предложил @BogdanSavluk .

Ответ №1:

GROUP BY Для достижения этой цели вы можете использовать statement:

 SELECT 
    O.OrderID,
    SUM(OI.UnitPoints) as TotalPoints
FROM 
    Orders O INNER JOIN
    [dbo].[OrderItems] AS OI ON O.OrderID = OI.OrderID
WHERE 
    O.PONumber = 72084
GROUP BY O.OrderID