我有以下的列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' –