如何将一个选择返回到另一个选择中以求和?

时间:2018-07-05 20:23:27

标签: sql sql-server-2008

我的问题是我想将数量列与其相应的员工ID求和,但不允许我使用as重命名查询结果

这是我的查询:

 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 :(得分:2)

尝试一下:

&response-content-type=application%2Fpdf

答案 1 :(得分:2)

类似的东西应该给您您想要的。

    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

答案 2 :(得分:1)

您可以使用直接聚合或使用窗口函数返回所有详细信息来执行此操作。 如果您不希望将结果分组到该级别,则可能需要从OrderID列表中删除SELECTGROUP 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
相关问题