私のSQLサーバーでは、2つのテーブル、支払いと顧客があります。支払いには、顧客が行ったすべての取引が含まれます。私が知りたいのは、たとえ取引をしなくても毎月の支払い金額をどのように得るのかです(私は結果として0を得ることもできます)。これは私にすべての顧客のEverymonthをから支払われるすべての金額を与えるトランザクションが行われなかった場合でも1か月あたりのすべてのトランザクションの合計()
SELECT Customer.FirstName, Customer.LastName,
YEAR(Payment.PaymentDate)AS YEARS, MONTH(Payment.PaymentDate) AS MONTHS,
SUM(Amount)AS Total
FROM Payment
join Customer
ON Customer.CustomerId = Payment.CustomerId
GROUP BY Customer.FirstName,
Customer.LastName, MONTH(Payment.PaymentDate), YEAR(Payment.PaymentDate),
Payment.CustomerId
ORDER BY YEARS desc, MONTHS desc
:
は今、私は私がして欲しい結果を得ます。
KATIE ELLIOTT 2006 2 2.99
DIANNE SHELTON 2006 2 4.99
NATALIE MEYER 2006 2 5.98
BETH FRANKLIN 2006 2 2.99
MIGUEL BETANCOURT 2006 2 3.98
ALBERTO HENNING 2006 2 2.99
BEVERLY BROOKS 2006 2 2.99
しかし、顧客によっては取引が行われなかった月がありました。私はそれらの結果を0にしてもらいたいと思っています。
どうすればいいですか?
カレンダーのテーブルを作成します。それと外部結合。 – jarlh
* * * SQL? SQLサーバー? MySQL? PostgreSQL?あなたの投稿を[編集]してタグ付けしてください。私はあなたが "SQLサーバー"と言っていることを知っているが、それは技術的には何でもよい。 Microsoft SQL Serverですか? –