Nel precedente post ho valutato male l'operatore OR nella tua query, interpretandolo come AND.
Allora, nel seguente esempio vado a restituire la riga riferita all'ID più piccolo raggruppando per codice, ma non ho idea se questo è il risultato atteso:
USE tempdb;
CREATE TABLE dbo.foo(
id int NOT NULL,
codice varchar(4) NOT NULL,
codiceFornitore varchar(3) NOT NULL,
Nome varchar(20) NOT NULL
);
INSERT dbo.foo VALUES
(1, '8022', '123', 'Lampadina 2W')
, (2, '8022', '124', 'Lampadina 2W')
, (3, '8022', '125', 'Lampadina 2W');
WITH CTE_GetKey(id) AS
(
SELECT MIN(id)
FROM dbo.foo
GROUP BY codice
)
SELECT F.*
FROM dbo.foo AS F
JOIN CTE_GetKey AS C
ON F.id = C.id
WHERE codice LIKE '12%'
OR codiceFornitore LIKE '12%';
/* Output:
id codice codiceFornitore Nome
----------- ------ --------------- --------------------
1 8022 123 Lampadina 2W
(1 row(s) affected)
*/
DROP TABLE dbo.foo;
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org