SQL Server Выберите пары значений из таблицы, если пара значений существует (как определено подстрокой)

Как я могу выбрать пару значений из моей таблицы, если значение равно другому значению с конкатенацией подстроки? У меня есть таблица SQL Server, которая содержит библиотечные карты сканирования, макет показан здесь.

Name            Status         Activation_Date
John_Doe        Active         1-1-2015
Jane_Smith      Inactive       2-2-2014
Jane_Smith_1    Active         1-2-2015

В этой таблице, когда покровитель теряет свою карту, старая карта деактивируется, и создается новая карта. Имя является первичным ключом, поэтому, поскольку предыдущий ключ используется, добавляется суффикс "_1".

Я хотел бы, чтобы мои результаты показали запись для "Jane_Smith", а также "Jane_Smith_1".

1 ответ

Решение

Если вы пытаетесь вернуть список всех строк, где существует другая строка в таблице, которая соответствует имени, но для _1, как насчет чего-то вроде этого:

SELECT *
FROM YourTable A
WHERE EXISTS (
    SELECT 1
    FROM YourTable
    WHERE REPLACE(Name,'_1','') = REPLACE(A.Name,'_1','')
      AND Name <> A.Name
)
Другие вопросы по тегам