2016-07-28 83 views
0

我寫了下面的查詢來獲取名稱和金額:從上述查詢我得到以下答案怎麼辦列的總和MSSQL

select fm.familyname,qt.amount 
    from Registrations rs left join Family fm on fm.id = rs.family_id 
    left join Quote qt on qt.id = rs.quote_id 
    group by fm.familyname,qt.amount 

所以:

name amount 
abc  1200 
abc  1300 
abc  1400 

但我想輸出像:

name amount 
abc 3900 

我該怎麼做?我已經使用Sum(isnull(cast(qt.amount as float),0)) as total,但是它正在做個別欄的總數。

我怎樣才能得到總數?

回答

3

簡單​​孤單: 「操作數的數據類型爲varchar(最大值)是和運營商無效」

select fm.familyname, SUM(qt.amount) 
from Registrations rs 
    left join Family fm on fm.id = rs.family_id 
    left join Quote qt on qt.id = rs.quote_id 
group by fm.familyname 

如果你得到的,你需要cast該列,這樣的:

select fm.familyname, sum(cast(qt.amount as float)) 
... 
+0

它給出錯誤操作數數據類型varchar(max)對求和運算符無效。 – deepak

+2

qt.amount是一個varchar列嗎???切換到整數。在修正之前,請投! (將編輯!) – jarlh

+0

是的。把這個總和線。謝謝 – deepak

1
select fm.familyname, 
SUM(
    CASE ISNUMeric(LTRIM(RTRIM(ISNULL(qt.amount,'0')))) WHEN 1 THEN CAST(qt.amount as decimal(10,2)) ELSE 0 END 
) AS amount 
from Registrations rs left join Family fm on fm.id = rs.family_id 
left join Quote qt on qt.id = rs.quote_id 
group by fm.familyname