#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