Использование объединения с функцией SQL в представлении - PullRequest
0 голосов
/ 06 сентября 2018

Это может быть очень простой вопрос для некоторых из вас, но, пожалуйста, будьте терпеливы с этим SQL-сервером обучения новичков.

Мне нужно создать представление, в котором я пытаюсь объединить несколько столбцов из двух таблиц.,Единственная проблема заключается в том, что в одном из столбцов есть значения, в которых есть дополнительные символы, которые необходимо удалить с помощью функции RIGHT или SUBSTRING, чтобы иметь возможность сопоставлять соответствующий столбец в другой таблице.

Вот что я написал, но мне нужна помощь в том, что я делаю неправильно с колонкой SerialNo:

SELECT a.ID, 
       a.SerialNo, 
       a.Price, 
       a.ItemName, 
       b.ID, b.SNumber, 
       b.ItemDesc
FROM Table1 a LEFT JOIN
Table2 b ON a.ID = b.ID AND
            a.Price = b.Price AND
            a.SerialNo = (SELECT RIGHT(b.SNumber, 6) AS b.SNumber from Table2)

1 Ответ

0 голосов
/ 06 сентября 2018

Вам не нужен подзапрос для обработки второго условия соединения, просто вызовите RIGHT напрямую:

SELECT a.ID, a.SerialNo, a.Price, a.ItemName, b.ID, b.SNumber, b.ItemDesc
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID AND
   a.Price = b.Price AND
   a.SerialNo = RIGHT(b.SNumber, 6);

В качестве примечания: если вы считаете, что вам нужно часто выполнять этот запрос, то вы можете рассмотреть возможность добавления нового столбца в Table2 для этого объединения, который представляет собой первые шесть символов SNumber. Причина этого заключается в том, что объединения могут быть очень дорогостоящими, когда условия включают функции. Кроме того, индексы, как правило, также не могут использоваться в этом случае.

...