Как я могу использовать возврат выбора в другой выбор, чтобы суммировать их? - PullRequest
0 голосов
/ 05 июля 2018

Моя проблема в том, что я хочу суммировать столбец количества с соответствующим идентификатором сотрудника, но это не позволяет мне переименовать результат запроса как

Вот мой запрос:

 SELECT Orders.OrderID,Orders.EmployeeID,[Order Details].Quantity 
    FROM Orders  INNER JOIN DimEmployee 
    ON Orders.EmployeeID=DimEmployee.EmployeeID 
    INNER JOIN [Order Details] 
    ON [Order Details].OrderID=Orders.OrderID 

Это не позволяет мне поставить:

AS name (query)

or (query) AS name

Чтобы я мог использовать другой запрос на выборку, подобный этому:

SELECT SUM([Orders Detail].Quantity) FROM queryResult Group By Orders.EmployeeID

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Попробуйте это:

   SELECT SUM(QUANTITY),EmployeeId FROM(
         SELECT ORD.OrderID,ORD.EmployeeID,OD.Quantity 
            FROM Orders AS ORD
            INNER JOIN DimEmployee  AS DE
            ON ORD.EmployeeID=DE.EmployeeID 
            INNER JOIN [Order Details] AS OD 
            ON OD.OrderID = ORD.OrderID 
            ) AS X
Group By EmployeeId
0 голосов
/ 05 июля 2018

Нечто подобное должно дать вам то, что вы хотите.

    SELECT 
    Orders.EmployeeID AS EmployeeID,
    SUM([Order Details].Quantity) AS TotalQty
    FROM Orders 
    INNER JOIN DimEmployee 
      ON Orders.EmployeeID=DimEmployee.EmployeeID 
    INNER JOIN [Order Details] 
        ON [Order Details].OrderID=Orders.OrderID 
    GROUP BY 
     Orders.EmployeeID
0 голосов
/ 05 июля 2018

Вы можете сделать это с помощью прямой агрегации или с помощью оконной функции, которая возвращает все детали. Возможно, вам придется удалить OrderID из списка SELECT и GROUP BY, если вы не хотите, чтобы результаты группировались на этом уровне.

SELECT 
    Orders.OrderID,
    Orders.EmployeeID,
    EmpTotal = SUM([Order Details].Quantity) 
FROM Orders  
    INNER JOIN DimEmployee 
    ON Orders.EmployeeID=DimEmployee.EmployeeID 
    INNER JOIN [Order Details] 
    ON [Order Details].OrderID=Orders.OrderID
GROUP BY
    Orders.OrderID,
    Orders.EmployeeID


SELECT 
    Orders.OrderID,
    Orders.EmployeeID,
    PartitionedTotal = SUM([Order Details].Quantity) OVER (PARTITION BY Orders.EmployeeID, Orders.OrderID) --here you may only want to partition by the EmployeeID instead of both
FROM Orders  
    INNER JOIN DimEmployee 
    ON Orders.EmployeeID=DimEmployee.EmployeeID 
    INNER JOIN [Order Details] 
    ON [Order Details].OrderID=Orders.OrderID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...