2014-04-16 204 views
0
SELECT 
CD.CountryID, CD.GrossLimit, CD.UnsecuredLimit, 
SUM(LT1.Amount), SUM(LT1.Unsecured), 
    (100*SUM(LT1.Unsecured)/CD.UnsecuredLimit) as PercOverCountryLimit 
FROM CountryDetail CD 
INNER JOIN 
(
SELECT CompanyName AS Company, CollateralSName as Collateral, SUM(Amount) AS Amount, 
     SUM(Usecured) AS Unsecured, LT.Date as Date, Max(CountryID) as CountryID 
    FROM Loanstotal LT 
    WHERE YearMonth = @YearMonth 
    GROUP BY CompanyName, CollateralSName, LT.Date 
) LT1 
GROUP BY CountryID, GrossLimit, UnsecuredLimit 
ON CD.CountryID = LT1.CountryID 
+0

你是怎麼看錯的?返回不正確的結果,出錯? – HLGEM

+0

我不喜歡格式化,但我懷疑這是你的意思。你能描述一下你的意思嗎?請通過編輯問題幷包含有關您希望執行此查詢的信息來完成此操作。 –

+2

我懷疑它出現在GROUP BY/ON結構中。 –

回答

1

那麼我馬上就會發現一些可能的問題 首先,您的group by位置不正確,它需要位於join之後的ON子句之前。

可能是打字錯誤:SUM(Usecured)應該是SUM(Unsecured)?

接下來根據您正在總結的字段中的數據類型,您可能會遇到整數數學問題。一個整數除以一個整數將給出一個整數結果(例如3/2 = 1),因此您必須將一個值轉換爲數字。

根據您使用的是哪個版本的SQL,可能存在其他問題,您需要指定支持哪個數據庫以獲得最佳答案。我是基於SQL服務器想要的。

+0

謝謝HLGEM,集團的條款可能成爲問題。該字段的名稱是Usecured,雖然它確實意味着不安全,但該分區位於Real類型之間。在c#VS10中使用SQL Server 2008。 – user3542939

+0

+1,因爲請求者沒有給你+1,但標記爲答案。 ;) –