2014-02-19 51 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 
Смежные вопросы