2014-02-19 6 views
0

나는이 두 가지 쿼리를 사용합니다. 파생 테이블을 만들기 위해 이들을 결합하는 방법을 모릅니다. 두 번째 쿼리를 주 쿼리로 사용하고 기본 쿼리의 FROM 절에서 첫 번째 쿼리를 사용한다고 가정합니다.SQL Server의 파생 테이블

SELECT EmailAddress, Orders.OrderID, SUM(ItemPrice * Quantity) AS OrderTotal 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
GROUP BY EmailAddress, Orders.OrderID; 

SELECT EmailAddress, MAX(ItemPrice) as LargestOrder 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
GROUP BY EmailAddress 
+0

쿼리와 관련된 작업은 무엇입니까? –

+0

고객이 한 번 주문 총계 또는 최대 합계 주문 합계의 최대 값을 얻으려고합니까? – Miller

+0

하나의 테이블에 두 개의 쿼리 결과를 결합하려고합니다. – jaramore

답변

2

결과를 동일한 테이블에 넣으시겠습니까? 그냥 이렇게 :

SELECT FirstTable.*, SecondTable.LargestOrder 
FROM (
    SELECT EmailAddress, Orders.OrderID, SUM(ItemPrice * Quantity) AS OrderTotal 
    FROM Customers 
    JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
    JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
    GROUP BY EmailAddress, Orders.OrderID) as FirstTable 
JOIN (
    SELECT EmailAddress, MAX(ItemPrice) as LargestOrder 
    FROM Customers 
    JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
    JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
    GROUP BY EmailAddress) as OtherTable ON FirstTable.EmailAddress = OtherTable.EmailAddress 
+0

감사합니다! 이제 작동합니다. – jaramore

1

그렇지 않으면이

SELECT DISTINCT 
    EmailAddress, 
    Orders.OrderID, 
    SUM(ItemPrice * Quantity) OVER (PARTITION BY EmailAddress, Orders.OrderID) AS OrderTotal, 
    MAX(ItemPrice) OVER (PARTITION BY EmailAddress) AS LargestOrder 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 

같은, 당신은 각각 자신의 공통 테이블 표현식으로 두 개의 쿼리를 결합하고 그에 함께 가입하실 수 있습니다 대신에, 그래서 당신은 "윈도우 기능"을 사용할 수 있습니다 선택하는 동안.

WITH Total AS (
    SELECT EmailAddress, Orders.OrderID, SUM(ItemPrice * Quantity) AS OrderTotal 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
GROUP BY EmailAddress, Orders.OrderID 
), Largest AS (

SELECT EmailAddress, MAX(ItemPrice) as LargestOrder 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
JOIN OrderItems ON Orders.OrderID = OrderItems.OrderID 
GROUP BY EmailAddress 
) 
SELECT Total.EmailAddress, Total.OrderId, OrderTotal, LargestOrder 
FROM Total 
INNER JOIN Largest ON Total.EmailAddress = Largest.EmailAddress