/ / Value Odejmowanie między dwiema kolumnami - sql

Wartość Odejmowanie między dwiema kolumnami - sql

To dwie z danymi

Table1                                    Table2
ID ColA                                   ID ColB
01 10                                     01 20
02 20                                     02 Null
03 30                                     03 30
04 25                                     04 Null

więc chcę odjąć od Col1 do Col2

już piszę sql Query, ale nie działa poprawnie

select (Table1.ColA-Table2.ColB)as Temp from Table1
inner join Table2 on Table1.ID Table2.ID

więc moje pytanie brzmi, gdy wartość null pobierająca z table2 odejmowanie czasu nie została wykonana, co zrobi, aby rozwiązać ten problem

Chcę, gdy wartość ma wartość null, że czas przyjmuje wartość 0

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz użyć COALESCE do domyślnego null do 0:

select COALESCE(Table1.ColA, 0) - COALESCE(Table2.ColB, 0) as Temp
from Table1 inner join Table2 on Table1.ID Table2.ID

COALESCE akceptuje wiele parametrów i zwraca pierwszą wartość inną niż null.

W niektórych bazach danych istnieje skrócona funkcja COALESCE, jeśli potrzebujesz tylko dwóch parametrów. Funkcje te mogą mieć takie nazwy jak nvl, ifnull, isnull, w zależności od bazy danych lub w ogóle może nie istnieć. COALESCE z drugiej strony jest dostępna w większości baz danych, więc jest to dobry wybór.


0 dla odpowiedzi nr 2

Jeśli używasz SQL Server lub TSQL isnull() lubię to:

select (isnull(Table1.ColA, 0) - isnull(Table2.ColB, 0))as Temp from Table1
inner join Table2 on Table1.ID Table2.ID

Jeśli korzystasz z innego użycia DBMS COALESCE lub ifnull() zamiast isnull().


0 dla odpowiedzi № 3

Wypróbuj funkcję IFNULL sql lub mysql

select ((IFNULL(Table1.ColA, 0))- (IFNULL(Table2.ColB, 0))) as Temp from Table1 inner join Table2 on Table1.ID = Table2.ID