У вас все еще есть некоторые специфичные для Oracle элементы, и вам не хватает некоторых полезных функций SQL Server.Вот моя попытка преобразования:
SELECT USC.USER_ID,
COALESCE(ADDR.STREET_1 + CHAR (10), '') +
COALESCE(ADDR.STREET_2 + CHAR (10), '') +
COALESCE(ADDR.STREET_3 + CHAR (10), '') +
COALESCE(ADDR.STREET_4 + CHAR (10), '') AS Streets,
,MAX(ADDR.CITY) AS CITY
,MAX(ADDR.POSTAL_CODE) AS POSTAL_CODE
,MAX(ADDR.STATE_ID) AS STATE_ID
,MAX(ADDR.COUNTRY_ID) AS COUNTRY_ID
FROM DSS_ERS_STAGE..ES_W_USER_CONT_INF USC
LEFT JOIN DSS_ERS_STAGE..ES_W_ADDRESS ADDR
ON USC.ADDRESS_ID = ADDR.ADDRESS_ID
GROUP BY USC.USER_ID
Определенные элементы: COALESCE () принимает список параметров и возвращает первое ненулевое значение.Если какое-либо из полей ADDR.STREET_x имеет значение null, конкатенация этого и CHAR (10) также будут нулевыми (если вы не измените ANSI_NULL по умолчанию).
Двойные точки в именах таблиц: я предполагаю, чтоDSS_ERS_STAGE - это имя базы данных.Если в SQL Server используется имя базы данных. Имя таблицы, необходимо указать третий уровень - имя схемы.В этом случае я предполагаю имя схемы по умолчанию (dbo), которое может быть опущено, хотя разделитель должен быть включен.Если бы вы использовали другую схему, скажем, 'db2data', ссылка на таблицу выглядела бы так:
FROM DSS_ERS_STAGE.db2data.ES_W_USER_CONT_INF USC
Надеюсь, это вам поможет.