0

私は次のような出席表を持っています

user_name     |   Col  |   col2   |   Col3  |  Col4 + other columns.

person1       |  a     |  3       | 76      | 56  etc.    ---------> sum of row

person2       |  6     |  72      | a       | 13  etc.    ---------> sum of row

ここで、「a」は存在しないことを示すため、すべての列を行に追加し、最後の列、つまり「合計」に表示して、「a」を無視し、行の残りの列の合計を追加する必要があります。最後の列の行に表示されます

4

3 に答える 3

0

「a」の代わりに NULL を使用することをお勧めしますが、MySql を使用する場合は、次のようなものを使用できます。

SELECT
  user_name, Col, col2, Col3, Col4, Col1+Col2+Col3+Col4
FROM
  yourtable
WHERE 'a' IN (Col, Col2, Col3, Col4)

ここでフィドルを参照してください。

于 2013-03-25T11:08:48.857 に答える
0

MSSQL では、次のように動作します。

SELECT
  user_name, Col, col2, Col3, Col4, 
  CAST(REPLACE(Col, 'a', '0') AS INT)+
  CAST(REPLACE(Col2, 'a', '0') AS INT)+
  CAST(REPLACE(Col3, 'a', '0') AS INT)+
  CAST(REPLACE(Col4, 'a', '0') AS INT)
FROM
  yourtable

ここでフィドルを参照してください

REPLACE の代わりに、CASE ステートメントを使用することもできます。

于 2013-03-25T12:46:51.203 に答える
0

これをmysqlで試してください

     SELECT
      user_name, Col, col2, Col3, Col4, Col+Col2+Col3+Col4 as sum
     FROM
      yourtable

これはSQLサーバーで

 SELECT
 user_name, Col, col2, Col3, Col4 ,
 case when col = 'a'
            then cast(col2 as int ) + cast(col3 as int ) +cast(col4 as int )
 when col2 = 'a'
            then cast(col as int ) + cast(col3 as int ) +cast(col4 as int )
 when col3 = 'a'
            then cast(col as int ) + cast(col2 as int ) +cast(col4 as int )
 when col4 = 'a'
            then cast(col as int ) + cast(col2 as int ) +cast(col3 as int )
else  cast(col as int )+ cast(col2 as int ) + cast(col3 as int ) +cast(col4 as int)     
 end    as sum_all

 FROM
  yourtable

 group by user_name , col , col2, col3,col4

デモはこちら

于 2013-03-25T11:20:54.350 に答える