У меня есть простая таблица со следующими столбцамиSQL Comapare Ряд данные для одного столбца результатов Возвращения вроде как одна строки
PrinterModel
: Модель принтера.
PrinterName
: Название принтера, которое отображается на компьютере пользователя.
PortName
: Обычно IP, UNC-путь или USB.
MachName
: Компьютер, на котором был найден принтер.
Я создал следующий запрос
SELECT PrinterModel, PrinterName, PortName
FROM [ksubscribers].[dbo].[vCurrPrinterInfo]
WHERE PrinterModel NOT LIKE '%Microsoft%'
AND PrinterModel NOT LIKE '%PDF%'
AND PrinterModel NOT LIKE '%HP ePrint%'
AND PrinterModel NOT LIKE '%Snagit%'
AND PrinterModel NOT LIKE '%Nuance%'
AND PrinterModel NOT LIKE '%Amyuni%'
AND PrinterModel NOT LIKE '%Foxit%'
AND PrinterModel NOT LIKE '%Brother PC-FAX%'
AND PrinterModel NOT LIKE '%Remote Desktop%'
AND PrinterModel NOT LIKE '%Wondershare%'
ORDER BY PortName
таблица является в основном коллекция принтеров, установленных на различных компьютерах в организации. Поскольку один и тот же принтер может быть установлен на нескольких компьютерах (думаю, сетевой принтер), таблица полна дубликатов. Мы можем использовать имя порта для идентификации дубликатов, однако некоторые строки покажут небольшое изменение в имени порта, например. 10.0.0.200 и 10.0.0.200_1.
Можно ли сравнивать данные в каждой строке, фокусируясь только на данных в столбце PortName, и если данные аналогичны, например. 10.0.0.200 vs 10.0.0.200_1 возвращает результат одной строки?
Ниже приведен пример таблицы
Model | Name | Port
OKI MC560 (POS) | OKI MC560 Try 1 | 10.0.0.200
OKI MC560 (PCL) | OKI MC560 Try 2 | 10.0.0.200
OKI MC560 (PCL) | OKI MC560 Try 3 | 10.0.0.200_1
OKI MC560 (TST) | OKI MC560 Try 1 | 10.0.0.200
... и в идеале я хотел бы вернуться
OKI MC560 (POS) | OKI MC560 Попробуйте 1 | 10.0.0.200
Я не слишком суетился, какие строки PrinterModel/Printer Name возвращаются, пока мы заканчиваем только одним результатом, это может быть из любой строки.
Я рассмотрел аналогичный вопрос здесь SQL compare data from two tables Однако я не вижу, как они сравнивают текстовую строку с помощью команды разницы?
Приложите снимок экрана текущего запроса вместе с возвращаемыми данными. Любые рекомендации будут очень признательны.
Вы можете использовать 'GROUP BY PortName'. Если вы используете группировку, другие строки в области «Выбрать» должны быть агрегированы как «MAX (PrinterModel), MAX (имя_сервера)». Если PortName отличается от вашего примера, вы должны сделать PortName уникальным. Например, удалите '_1' –