2016-10-05 5 views
1

2つのクエリを作成して、両方とも互いに独立して必要な結果を返すようにしました。返された値がcustomerName、Amount Ordered、およびAmount Paidになるようにそれらを結合しようとしています。2つのサブクラスをどのようにサブクエリするのですか?

現在、このクエリは機能しますが、customerNameのみを返します。他の2つの列を返すクエリを取得するにはどうすればよいですか?

SELECT c1.customerName 
FROM 
    (SELECT cc.customerName, ROUND(SUM(od.priceEach * od.quantityOrdered), 2) as '$ Amount Ordered' 
    FROM customers cc 
    INNER JOIN orders o ON o.customerNumber = cc.customerNumber 
    INNER JOIN orderdetails od ON od.orderNumber = o.orderNumber 
    GROUP BY cc.customerName 
    ) c1 
INNER JOIN 
    (SELECT c.customerName, ROUND(SUM(p.amount), 2) as 'Total $ Amount Paid' 
    FROM customers c 
    INNER JOIN payments p ON p.customerNumber = c.customerNumber 
    GROUP BY c.customerName 
    ) c2 
WHERE c1.customerName = c2.customerName 
GROUP BY c1.customerName 
ORDER BY c1.customerName; 

答えて

2

これは他の人の列

SELECT c1.customerName, c1.Amount_Ordered as '$ Amount Ordered', c2.Total_Amount_Paid as 'Total $ Amount Paid' 
FROM 
    (SELECT cc.customerName, ROUND(SUM(od.priceEach * od.quantityOrdered), 2) as Amount_Ordered 
    FROM customers cc 
    INNER JOIN orders o ON o.customerNumber = cc.customerNumber 
    INNER JOIN orderdetails od ON od.orderNumber = o.orderNumber 
    GROUP BY cc.customerName 
    ) c1 
INNER JOIN 
    (SELECT c.customerName, ROUND(SUM(p.amount), 2) as Total_Amount_Paid 
    FROM customers c 
    INNER JOIN payments p ON p.customerNumber = c.customerNumber 
    GROUP BY c.customerName 
    ) c2 
WHERE c1.customerName = c2.customerName 
GROUP BY c1.customerName 
ORDER BY c1.customerName; 
+0

ありがとう助けを。これは物事をクリアした。 –

1
単に

選択部にそれらを追加]を選択する必要があります

SELECT c1.customerName, C1.amountOrdered, C2.amountPaid FROM ... 

やアドバイスの1つの以上の単語を - DONTは$のような空白や特殊な兆候を使用しますあなたの列名では、それは悪い習慣です。私はそれが間違いだと思うmySqlもそれを可能にする

+0

チップをありがとう。私はSQLに慣れていないので、私はそれを知らなかった。 –

関連する問題