Наиболее эффективный способ установить значение по умолчанию в таблице фактов звездообразной схемы в SQL Server - PullRequest
0 голосов
/ 01 ноября 2018

Я построил звездообразную схему с несколькими измерениями, но я хотел бы установить значение по умолчанию 0 для таблицы фактов, если для этого измерения не найдено подходящего значения. Вот мое текущее решение:

Операторы левого соединения и регистра

SELECT 
    CASE WHEN d1.ID is NULL THEN 0 ELSE d1.ID END,
    CASE WHEN d2.ID is NULL THEN 0 ELSE d2.ID END
FROM OriginalTable OT
LEFT JOIN Dim1 d1
    ON OT.field1 = d1.field
LEFT JOIN Dim1 d2
    ON OT.field2 = d2.field

Есть ли более эффективный способ?

1 Ответ

0 голосов
/ 01 ноября 2018

В SQL-сервере вы можете использовать как IsNULL, так и coalesce, coalesce возвращает первое значение, которое не является нулевым, поэтому

SELECT 
coalesce(d1.ID,0),
coalesce(d2.ID,0)
FROM OriginalTable OT
LEFT JOIN Dim1 d1
   ON OT.field1 = d1.field
LEFT JOIN Dim1 d2
   ON OT.field2 = d2.field 

должен сделать трюк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...