2013-04-20 33 views
-1
select CURRENCY.currencyname, currency.currencysymbol, COUNTRYNAME.currencycode, 
     currency.exchangerate 
from CURRENCY,COUNTRYNAME 
where currency.currencycode=COUNTRYNAME.currencycode 
having currency.exchangerate >= max(currency.exchangerate) 
group by CURRENCY.currencyname, currency.currencysymbol, 
     COUNTRYNAME.currencycode, currency.exchangerate; 

这是我得到的输出,我知道是错误的,因为我试图只显示最大的汇率将是。所以任何帮助解决这个查询将非常感激。我的Oracle SQL Developer错误的查询输出时使用where和具有相同的SQL语句

CURRENCYNAME   CURRENCYSYMBOL  CURRENCYCODE EXCHANGERATE 
-------------------- -------------------- ------------ ------------ 
British Pound  £     GBP      1, 
US Dollar   $     USD    1.9626 , 
Danish Krone   kr     DKK    9.9918 , 
Malaysian Ringgit RM     MYR    6.35392 , 
Euro     €     EUR    1.34076 , 
Indian Rupee   Rs     INR    77.3265 , 
Japanese Yen   ¥     JPY    209.881, 
+0

什么是你应该做的? – 2013-04-20 10:55:36

+0

与_trying显示_它正在做什么它在选择.. – dbf 2013-04-20 10:56:17

+0

选择'max(currency.exchangerate)'怎么样? – 2013-04-20 11:01:35

回答

0

请尝试以下

SELECT CURRENCY.currencyname, currency.currencysymbol, 
     COUNTRYNAME.currencycode, MAX(currency.exchangerate) as ExchangeRate 
FROM CURRENCY 
INNER JOIN COUNTRYNAME ON COUNTRYNAME.currencycode = currency.currencycode 
GROUP BY CURRENCY.currencyname, currency.currencysymbol, COUNTRYNAME.currencycode; 
0

关于您的查询......

1。您无法将MAX(聚合)值与同一查询级别的基准值进行比较。您可以使用派生表(也称为“子查询”),例如

 
    select c.currencyname, c.currencysymbol, n.currencycode, c.exchangerate 
    from CURRENCY c 
    join COUNTRYNAME n on c.currencycode=n.currencycode 
    where c.exchangerate = (select max(exchangerate) from currency) 

2。从上面你会注意到我使用了JOIN来连接这两个表。大约21年前,随着ANSI-92连接语法的出现,使用表名的逗号列表变得不合时宜。

3。显示的查询无法工作。 GROUP BY子句属于HAVING子句之前,而不是之后。话虽如此,上面的第一点适用,无论如何您都无法将MAX值与(基准)列值进行比较。

+0

感谢队友完美对不起我推出了逗号列表只是一个打字错误 – 2013-04-20 11:31:16

0

该查询可能可以简化为:

select max(currencyname), max(currencysymbol), currencycode, max(exchangerate) 
from currency group by currencycode 

( - 假设没有那些从未使用过任何国家的货币)