Ik heb een tabel Emp
met deze rijen:
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 |
Ik wil SUM
van Val1, Val2, Val3
vinden en die wordt weergegeven in de kolom Total
.
Antwoord 1, autoriteit 100%
Eenvoudig:
SELECT
Val1,
Val2,
Val3,
(Val1 + Val2 + Val3) as 'Total'
FROM Emp
of als je maar één rij wilt:
SELECT
SUM(Val1) as 'Val1',
SUM(Val2) as 'Val2',
SUM(Val3) as 'Val3',
(SUM(Val1) + SUM(Val2) + SUM(Val3)) as 'Total'
FROM Emp
Antwoord 2, autoriteit 36%
U moet ook op de hoogte zijn van null
-records:
SELECT (ISNULL(Val1,0) + ISNULL(Val2,0) + ISNULL(Val3,0)) as 'Total'
FROM Emp
Gebruik van ISNULL
:
ISNULL(col_Name, replace value)
Antwoord 3, autoriteit 21%
Net als een gewone SELECT
?
SELECT
Val1, Val2, Val3,
Total = Val1 + Val2 + Val3
FROM dbo.Emp
Of wil je dat totaal bepalen en de tabel bijwerken met die waarden?
UPDATE dbo.Emp
SET Total = Val1 + Val2 + Val3
Als u wilt dat dit totaal altijd actueel is, moet u een berekende kolom in uw tabel hebben:
ALTER TABLE dbo.Emp
ADD CurrentTotal AS Val1 + Val2 + Val3 PERSISTED
Dan krijgt u altijdhet huidige totaal – zelfs als de waarden veranderen:
SELECT
Val1, Val2, Val3, CurrentTotal
FROM dbo.Emp
Antwoord 4, autoriteit 4%
Probeer dit:
select sum(num_tax_amount+num_total_amount) from table_name;
Antwoord 5
Nog een voorbeeld met 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
Antwoord 6
Hallo, u kunt een eenvoudige zoekopdracht gebruiken,
select emp_cd, val1, val2, val3,
(val1+val2+val3) as total
from emp;
Als u een nieuwe rij moet invoegen,
insert into emp select emp_cd, val1, val2, val3,
(val1+val2+val3) as total
from emp;
Om te updaten,
update emp set total = val1+val2+val3;
Dit wordt bijgewerkt voor alle comumns
Antwoord 7
Moest soortgelijk werk doen aan een Postgres db-tabel met null-waarde. Uiteindelijk een functie gemaakt omdat er te COALESCE
zijn om toe te voegen.
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;
Antwoord 8
SELECT Emp_cd, Val1, Val2, Val3, SUM(Val1 + Val2 + Val3) AS TOTAL
FROM Emp
GROUP BY Emp_cd, Val1, Val2, Val3
Antwoord 9
gebruik een trigger, het zal werken:-
->CREER TRIGGER trigger_name VOORDAT INSERT ON table_name
VOOR ELKE RIJ SET NEW.column_name3 = NEW.column_name1 + NEW.column_name2;
dit werkt alleen wanneer u een rij invoegtin de tabel, niet wanneer u uw tabel voor een dergelijk doel gaat bijwerken
maak een andere trigger met een andere naam en gebruik UPDATEop de plaats van INSERTin de bovenstaande syntaxis