我有以下的列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
表基本上是安装在一个组织内的各种电脑打印机的集合。由于可以在多台计算机上安装同一台打印机(请考虑网络打印机),表格中充满了重复项目。我们可以使用PortName来标识重复项,然而,某些行在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(PrinterName)'。如果PortName与您的示例中不同,则应使PortName唯一。例如删除'_1' –