0

私は2つのテーブルを持っています:

顧客取引

Id (int auto int)
CustomerName (varchar)
CustomerNumber (int)
Date (date)
WeeklyAmount (int)

顧客:

CustomerName (varchar)
CustomerNumber (int)
CustomerType (int)
CustomerDate (date)

このデータベースは正規化されていないため、変更できません。そしてCustomerName私がする必要があること:

Customers顧客番号と一致する各行のすべての情報を含む 1 つのテーブルを表示する結果が必要です。ではCustomerTransaction、金額ごとにすべての合計をグループ化しているCustomerNameだけです。

私は使っている:

Select
    CustomerNumber, SUM (WeeklyAmount) as Total 
from  
    Customers.RECORDS 
GROUP BY 
    CustomerNumber; 

それぞれの合計を取得しますCustomerNumberCustomerName問題は、グループに含めることができないことです。時々、顧客の名前は時間の経過とともに変化します。Customers上記の結果からデータを取得し、CustomerNumbers

問題は、ストアド プロシージャでそれがわからないことです。これがどのように行われるか知っている人はいますか?すべての行が一致する必要があります。

4

2 に答える 2

1
Select
CustomerNumber, SUM (WeeklyAmount) as Total from  
Customers.RECORDS GROUP BY CustomerNumber; 

とはCustomers.RECORDS? それは少し混乱します。それとは別に、私は答えます

SELECT 
c.*,
sq.Total
FROM
(
SELECT 
CustomerNumber,
SUM(WeeklyAmount) AS Total
FROM 
CustomersTransaction
GROUP BY CustomerNumber
) sq
INNER JOIN Customers c ON c.CustomerNumber = sq.CustomerNumber

それが探しているものでない場合は、質問を言い換える必要があります。実際の問題がどこにあるのかを理解するのは少し難しいです。通常、私は少し異なるクエリを書きますが、これは非正規化の問題に対処する必要があります。

于 2013-07-17T18:10:44.073 に答える