SQL Server 2005에서 테이블의 여러 열 합계를 찾는 방법은 무엇입니까?
자리가 있습니다Emp
다음과 같은 행이 있습니다.
Emp_cd | Val1 | Val2 | Val3 | Total
-------+-------+-------+-------+-------
1 | 1.23 | 2.23 | 3.43 |
2 | 23.03 | 12.23 | 2.92 |
3 | 7.23 | 9.05 | 13.43 |
4 | 03.21 | 78.23 | 9.43 |
찾고 싶습니다SUM
의Val1, Val2, Val3
그리고 그것은 에 나타날 것입니다.Total
기둥.
쉬운:
SELECT
Val1,
Val2,
Val3,
(Val1 + Val2 + Val3) as 'Total'
FROM Emp
또는 한 행만 원하는 경우:
SELECT
SUM(Val1) as 'Val1',
SUM(Val2) as 'Val2',
SUM(Val3) as 'Val3',
(SUM(Val1) + SUM(Val2) + SUM(Val3)) as 'Total'
FROM Emp
당신은 또한 알고 있어야 합니다.null
레코드:
SELECT (ISNULL(Val1,0) + ISNULL(Val2,0) + ISNULL(Val3,0)) as 'Total'
FROM Emp
의 사용ISNULL
:
ISNULL(col_Name, replace value)
그냥 단골로SELECT
?
SELECT
Val1, Val2, Val3,
Total = Val1 + Val2 + Val3
FROM dbo.Emp
아니면 총계를 확인하고 해당 값으로 표를 업데이트하시겠습니까?
UPDATE dbo.Emp
SET Total = Val1 + Val2 + Val3
이 합계를 항상 최신 상태로 유지하려면 테이블에 계산된 열이 있어야 합니다.
ALTER TABLE dbo.Emp
ADD CurrentTotal AS Val1 + Val2 + Val3 PERSISTED
그러면 값이 변경되더라도 항상 현재 합계를 얻을 수 있습니다.
SELECT
Val1, Val2, Val3, CurrentTotal
FROM dbo.Emp
사용해 보십시오.
select sum(num_tax_amount+num_total_amount) from table_name;
COALESCE를 사용한 또 다른 예.http://sqlmag.com/t-sql/coalesce-vs-isnull
SELECT (COALESCE(SUM(val1),0) + COALESCE(SUM(val2), 0)
+ COALESCE(SUM(val3), 0) + COALESCE(SUM(val4), 0)) AS 'TOTAL'
FROM Emp
안녕하세요. 간단한 질문을 사용할 수 있습니다.
select emp_cd, val1, val2, val3,
(val1+val2+val3) as total
from emp;
새 행을 삽입해야 할 경우
insert into emp select emp_cd, val1, val2, val3,
(val1+val2+val3) as total
from emp;
업데이트하려면,
update emp set total = val1+val2+val3;
모든 열에 대해 업데이트됩니다.
Null 값을 가진 Postgres db 테이블에서 유사한 작업을 수행해야 합니다.결국 함수를 만들었습니다.COALESCE
덧붙이자면
CREATE OR REPLACE FUNCTION array_sum_float(float[])
RETURNS float
AS
$$
DECLARE
arrInts ALIAS FOR $1;
sum int DEFAULT 0;
BEGIN
FOR I IN ARRAY_LOWER(arrInts, 1)..ARRAY_UPPER(arrInts, 1)
LOOP
sum = sum + COALESCE(arrInts[I], 0);
END LOOP;
RETURN sum;
END;
$$
LANGUAGE plpgsql;
SELECT array_sum_float(ARRAY [6,8, null, 2]);
SELECT array_sum_float(ARRAY [Val1, Val2, Val3]) from Emp;
SELECT Emp_cd, Val1, Val2, Val3, SUM(Val1 + Val2 + Val3) AS TOTAL
FROM Emp
GROUP BY Emp_cd, Val1, Val2, Val3
작동하는 트리거를 사용합니다.
->table_name에 삽입하기 전에 트리거 트리거_name을 생성합니다.
각 행 세트 NEW.column_name3 = NEW.column_name1 + NEW.column_name2;
테이블을 업데이트할 때가 아니라 테이블에 행을 삽입할 때만 작동하며, 다른 이름의 트리거를 만들고 위 구문에서 INSERT 위치에 UPDATE를 사용합니다.
언급URL : https://stackoverflow.com/questions/11033340/how-to-find-sum-of-multiple-columns-in-a-table-in-sql-server-2005
'programing' 카테고리의 다른 글
python 또는 ipython 인터프리터 입력 시 모듈 자동 가져오기 (0) | 2023.07.21 |
---|---|
그림 오른쪽의 Y 축 눈금 (0) | 2023.07.21 |
격리 레벨 - 직렬화 가능.언제 사용해야 하나요? (0) | 2023.07.16 |
MongoDB 트랜잭션? (0) | 2023.07.16 |
다른 가지를 잡아당기다 (0) | 2023.07.16 |