Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Łączenie wielu tabel zwraca wartość NULL

Dzieje się tak, ponieważ null po obu stronach operatora dodawania da wynik null . Możesz użyć ISNULL(LiabilityPremium, 0) Przykład:

ISNULL(l.LiabilityPremium,0) + ISNULL(h.LiabilityPremium,0) as LiabilityPremium

lub możesz użyć COALESCE zamiast ISNULL .

COALESCE(l.LiabilityPremium,0) + COALESCE(h.LiabilityPremium,0) as LiabilityPremium

Edytuj

Nie jestem pewien, czy jest to zbieg okoliczności z tym małym zestawem danych, czy oczekiwany, ale jeśli zawsze oczekuje się, że albo @LiabilityPremium.LiabilityPremium lub @HiredPremium.LiabilityPremium zawsze będzie null, wtedy nie ma potrzeby wykonywania dodawania. Zamiast tego użyj COALESCE bezpośrednio na tych 2 kolumnach.

COALESCE(l.LiabilityPremium, h.LiabilityPremium) as LiabilityPremium


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zmienić tryb SQL Server Windows na tryb mieszany (SQL Server 2008)?

  2. Zaktualizuj wiele tabel w SQL Server za pomocą INNER JOIN

  3. DATEDIFF() vs DATEDIFF_BIG() w SQL Server:jaka jest różnica?

  4. Dynamiczny obrót T-SQL

  5. Zaktualizuj profil poczty bazy danych w programie SQL Server (T-SQL)