2017-01-13 4 views
0

SQL文を使用して3つの列を合計するアプリケーションを構築しています。以下はサンプルテーブルです。SQLは1つの文に異なる列を合計します

Table1 
column1  column2 column3 
NULL  30.00 NULL 
60.00  NULL  NULL 
NULL  10.00 NULL 
NULL  NULL  15.00 

私はcolumn1、column2、column3を1つのステートメントにまとめたいと考えています。私は結果を115.00 (30.00 + 60.00 + 10.00 + 15.00)にしたい。表には3つの列のいずれかにデータを格納できますが、いずれの列にも格納することはできません。

これは私がこれまで持っているものです。

SELECT ISNULL(sum(column1),ISNULL(sum(column2),sum(column3)) as amount FROM Table1 

結果がリモートで接近していないものです。

+0

の可能性のある重複した[SQL:?合計1列がnull値を持つ3列](http://stackoverflow.com/questions/ 1088648/sql-sum-3-columns-one-column-has-a-null-value) – Edward

答えて

1

、あなたが行うことができます:

select sum(column1) + sum(column2) + sum(column3) 
from table1 t; 

各列が少なくとも1つの値を持っているので、個々の和がNULLされませんので、これは予想を与えます値。

安全のために、あなたはcoalesce()使用することができます

select coalesce(sum(column1), 0) + coalesce(sum(column2), 0) + coalesce(sum(column3), 0) 
from table1 t; 
1

​​3210を使用してnullがある場合は0を割り当ててから値を合計します。

SELECT SUM(coalesce(column1,0)+coalesce(column2,0)+coalesce(column3,0)) as amount 
FROM Table1 
3

COALESCE機能も機能します。与えられた例では:お使いの場合には

SELECT sum(COALESCE(column1,0)) 
      + COALESCE(column2,0) 
      + COALESCE(column3,0) 
    AS TOTAL FROM Table1 
関連する問題