2014-07-17 173 views
0

我有两个表,产品和ExchangeRates,我试图计算汇率。我在SQL中创建了许多计算查询,但出于某种原因,这似乎没有输出任何内容,我尝试过以多种方式格式化查询,也许我看不到它的正确性。但到目前为止,我货币计算器SQL Server 2012

Select ExchangeRates.Rate * sum(Products.Cost) as Total from ExchangeRates 
INNER JOIN Products ON Products.ProductsID=ExchangeRates.ID 
WHERE ExchangeRates.CurrencyCode = 'EUR' Group BY ExchangeRates.Rate 

我认为它,当我把在WHERE子句中,因为没有它,它计算(但只有最后输入速率),但我需要指定我想它来计算其速度。

汇率表由

ID (int), CurrencyCode(nchar (3), Rates(decimal, (10,5) 
--Data in this table ID 1, CurrecnyCode: EUR, Rates: 1.26 

产品表

ProductID, Itemdescript(nvarchar), CurrecncyCode, Cost(decimal(10,2) 

输出什么,尽管我有我的两个表

修订

下面的答案是正确的数据,但我也没有我的ExchangeRates表中没有“GBP”,这就是为什么它不计算。我想要计算英镑对欧元,但我想它需要GBP在ExchangeRates表

+2

请添加你的表结构,例如数据,预期输出。 –

+0

你的意思是什么不起作用?意外的输出?错误? –

+0

什么意思是“这不起作用”? – Jens

回答

0

这是您的查询,清理了一下与表的别名:

Select er.Rate * sum(p.Cost) as Total 
from ExchangeRates er INNER JOIN 
    Products p 
    ON p.ProductsID = er.ID 
WHERE er.CurrencyCode = 'EUR' 
Group BY er.Rate; 

on子句高度可疑:它对于汇率来说,id似乎不太可能是产品ID。其他一些领域,需要诸如CurrencyCodejoin

Select er.Rate * sum(p.Cost) as Total 
from ExchangeRates er INNER JOIN 
    Products p 
    ON p.CurrencyCode = er.CurrencyCode 
WHERE er.CurrencyCode = 'EUR' 
Group BY er.Rate; 
+0

YEP!你完全正确!谢谢你! :) 我改变了连接到CurrencyCode到CurrecnyCode而不是ID和它的工作! :) – MissLadyBoo