2013-12-16 28 views
1

我有一個桌墊在SQL以下類型的數據:和2010

Mid Mat1 Mat2 Mat3 Mat4 Mat5 
100  4  5 0  n/a  10 
100  1  2 0  3  n/a 
100  2  1 n/a n/a  11 
101  2  5 0  n/a  n/a 
101  6  20 0  10  n/a 
現在

爲每個中旬,我們需要總結所有的墊子排除N/A值。

我應該得到以下數據:

Mid  Mat1  Mat2  Mat3  Mat4 Mat5 
100  7   8   0   3  21 
101  8   25  0   10  0 

有人能告訴我如何在SQL查詢實現這一目標???

+0

MAT1,MAT2 ....成爲其數據類型 –

+0

這些都是爲nvarchar類型 – mmssaann

回答

0

這應該工作

SELECT  
Mid, 
    SUM(CAST(case when Mat1='n/a' then null Mat1 else AS INT)) AS mat1, 
    SUM(CAST(case when Mat2='n/a' then null Mat2 else AS INT)) AS mat2, 
    SUM(CAST(case when Mat3='n/a' then null Mat3 else AS INT)) AS mat3, 
    SUM(CAST(case when Mat4='n/a' then null Mat4 else AS INT)) AS mat4, 
    SUM(CAST(case when Mat4='n/a' then null Mat4 else AS INT)) AS mat4, 
    SUM(CAST(case when Mat5='n/a' then null Mat5 else AS INT)) AS mat5 
FROM Mat 
GROUP BY Mid 
0

嘗試這個

select SUM(cast(Mat1 as int)) as mat1,SUM(cast(Mat2 as int)) as mat2,SUM(cast(Mat3 as int)) as mat3,SUM(cast(Mat4 as int)) as mat4,SUM(cast(Mat4 as int)) as mat4,SUM(cast(Mat5 as int)) as mat5 from Mat group by Mid