2017-04-08 2 views
0

현명한 전체 datatable 데이터 행으로 업데이트하고 싶지만 어떻게해야합니까?sql 다른 열 데이터를 합계로 업데이트하십시오.

은 내가 원하는 것을 참조 :

enter image description here

만을 행 방향하지만이 NULL 값이 작동하지 않습니다와 함께 표시 합 데이터에 대한이 코드.

select 
    sum(tc6671 + tf6671 + pc6671 + pf6671 + tc8572 + tf8572 + pc8572 + pf8572 + 
     tc6672 + tf6672 + tc6673 + tf6673 + pc6673 + pf6673 + pc6674 + pf6674 + tc5852 + tf5852 + 
     tc5853 + tf5853) as Test 
from 
    cmt_7th; 

그러나 모든 특정 데이터를 모든 특정 데이터로 업데이트하고 싶습니다.

나는이 코드를 시도했지만 실패했습니다 :

update cmt_7th 
set roll = sum(tc6671+tf6671+pc6671+pf6671+tc8572+tf8572+pc8572+pf8572+ 
       tc6672+tf6672+tc6673+tf6673+pc6673+pf6673+ 
       pc6674+pf6674+tc5852+tf5852+tc5853+tf5853); 

그리고이 코드에 의해도 시도했다 :

대신 tc6671 + tf6671, 널 (null)을 처리하기 위해 사용 유착의
UPDATE c 
SET c.total = c.tc6671+c.tf6671+c.pc6671+c.pf6671+c.tc8572+c.tf8572+c.pc8572+ 
       c.pf8572+c.tc6672+c.tf6672+c.tc6673+c.tf6673+c.pc6673+c.pf6673+ 
       c.pc6674+c.pf6674+c.tc5852+c.tf5852+c.tc5853+c.tf5853 
FROM cmt_7th c 

답변

0

. coalesce(tc6671,0)+coalesce(tf6671,0)+...

처럼

은 그래서 업데이트 문은 뭔가 같은

UPDATE c 
    SET c.total = coalesce(c.tc6671,0) + coalesce(c.tf6671,0) + coalesce(c.pc6671,0) 
    + coalesce(c.pf6671,0) + coalesce(c.tc8572,0) + coalesce(c.tf8572,0) 
    + coalesce(c.pc8572,0) + coalesce(c.pf8572,0) + coalesce(c.tc6672,0) 
    + coalesce(c.tf6672,0) + coalesce(c.tc6673,0) + coalesce(c.tf6673,0) 
    + coalesce(c.pc6673,0) + coalesce(c.pf6673,0) + coalesce(c.pc6674,0) 
    + coalesce(c.pf6674,0) + coalesce(c.tc5852,0) + coalesce(c.tf5852,0) 
    + coalesce(c.tc5853,0) + coalesce(c.tf5853,0) 
FROM cmt_7th c 

될 것입니다하지만 select sum(coalesce(c.tc6671,0) ...를 사용하는 경우 당신은 모든 컬럼의 합계 금액 만 1 행과 열을 얻을 것이다. 여기를 참조하십시오.

http://rextester.com/LUIPOW59089