0

現在の金額にすべてのカウントの最低金利を掛けて、顧客のID、アカウントの通貨、およびアカウントの年末の金額を返すSQLクエリを作成しようとしています。

テーブルは次のようなものです

**customer**       **account**
 id                  id
 name                customer_id
 surname             curreny
                     cur_Amount
                     interest_rate

以下のようなクエリを実行しましたが、最小の利率を持つ1つの行のみが返されます。

SELECT customer.id, account.currency, account.cur_amount, MIN(account.interest_rate)*cur_amount AS End_Year_Balance FROM customer, account LEFT JOIN account on customer.id = account.customer_id

最小金利を多重化して、カットソマーIDと期末残高を持つすべてのアカウントを一覧表示するにはどうすればよいですか?

ありがとうございました

4

4 に答える 4

0

これはうまくいくはずで、とても簡単です:

SELECT
    c.id,
    a.currency,
    a.cur_amount,
    a.cur_amount * (SELECT MIN(interest_rate) FROM account)
FROM
    customer c left join account a on c.id = a.customer_id
于 2012-04-09T11:12:03.663 に答える
0

これはMySQLで動作します

SELECT min(interest_rate) into @min_interest from account;

SELECT customer.id,account.currency,account.cur_amount,@min_interest*cur_amount AS End_Year_Balance 
FROM customer 
LEFT JOIN account 
ON customer.id = account.customer_id;

これはどのDBでも機能します:

SELECT customer.id,account.currency,account.cur_amount,temp.min_interest*cur_amount AS End_Year_Balance 
FROM customer 
LEFT JOIN account ON customer.id = account.customer_id
LEFT JOIN (SELECT min(interest_rate) as min_interest from account) temp ON 1=1;
于 2012-04-09T10:37:22.130 に答える
0

クエリからあいまいさを取り除く必要があり、AGGREGATE関数GROUP BYを使用する場合に使用する必要があります。ただし、これは同様の状況で機能するサンプル クエリです。

select a.custid, a.custname, a.surname, 
b.accid, b.currency, b.curamount, b.interestrate, b.EndYearBalance 
from customer a 
left outer join 
(
select accid, custid, currency, curamount, MIN(interestrate) AS interestrate, 
ISNULL(MIN(interestrate)*curamount, 0) AS EndYearBalance 
from  account 
group by accid, custid, currency, curamount   
) as b on a.custid = b.custid 
于 2012-04-09T10:50:07.243 に答える
0
SELECT
    customer.id, customer.name, customer.surname,
    account.id, account.currency, account.cur_Amount, account.interest_rate,
    account.cur_Amount * A2.LowestInterestRate

FROM
    customer
    INNER JOIN account ON (customer.id = account.customer_id)
    LEFT JOIN 
        (SELECT customer.id, MIN(interest_rate) LowestInterestRate 
         FROM account 
         GROUP BY customer.id
    ) AS A2 ON (customer.id = A2.customer_id)
于 2012-04-09T10:44:59.397 に答える