ho bisogno di aiuto su di una query.
col1 col2 col3
2 3 6
4 6 2
7 9 1
1 0 1
2 3 34
7 9 67
ho bisogno di selezionare le righe che hanno le prime due
colonne contemporaneamente uguali.
quindi vorrei come risultato:
2 3 6
2 3 34
7 9 1
7 9 67
grazie mille
ciao, marco
devi comunque trovare un modo di avere una colonna univoca nella tabella, in
modo da poter confrontare tale univocita' tra di loro...
un metodo puo' essere
SET NOCOUNT ON
DECLARE @t TABLE (
X INT ,
Y INT ,
Z INT
)
INSERT INTO @t VALUES ( 2 , 3 , 6 )
INSERT INTO @t VALUES ( 4 , 6 , 2 )
INSERT INTO @t VALUES ( 7 , 9 , 1 )
INSERT INTO @t VALUES ( 1 , 0 , 1 )
INSERT INTO @t VALUES ( 2 , 3 , 34 )
INSERT INTO @t VALUES ( 7 , 9 , 67 )
CREATE TABLE #tmp (
ID INT IDENTITY ,
X INT ,
Y INT ,
Z INT
)
INSERT INTO #tmp SELECT * FROM @t
SELECT *
FROM #tmp t
WHERE EXISTS (SELECT * FROM #tmp WHERE ID <> t.ID AND (X=t.X AND Y=t.Y))
DROP TABLE #tmp
--<------------------
ID X Y Z
----------- ----------- ----------- -----------
1 2 3 6
3 7 9 1
5 2 3 34
6 7 9 67
--
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz/DbaMgr.shtm http://italy.mvps.org
DbaMgr2k ver 0.8.0 - DbaMgr ver 0.54.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual
interface)
--------- remove DMO to reply
Ciao Marco,
prova a guardare il seguente esempio:
USE tempdb
GO
/* Definisco la tabella dbo.Test */
CREATE TABLE dbo.Test(
TestID int NOT NULL IDENTITY PRIMARY KEY,
Col1 int NOT NULL,
Col2 int NOT NULL,
Col3 int NOT NULL
)
GO
/* La popolo */
SET NOCOUNT ON
INSERT dbo.Test VALUES(2, 3, 6)
INSERT dbo.Test VALUES(4, 6, 2)
INSERT dbo.Test VALUES(7, 9, 1)
INSERT dbo.Test VALUES(1, 0, 1)
INSERT dbo.Test VALUES(2, 3, 34)
INSERT dbo.Test VALUES(7, 9, 67)
SET NOCOUNT OFF
GO
/* Definisco la vista dbo.vw_GetKey
** che mi restituisce le righe che hanno
** le colonne Col1 e Col2 riprtute
*/
CREATE VIEW dbo.vw_GetKey
AS
SELECT Col1, Col2
FROM dbo.Test
GROUP BY Col1, Col2
HAVING COUNT(*) > 1
GO
/* Query */
SELECT T.Col1, T.Col2, T.Col3
FROM dbo.Test T JOIN dbo.vw_GetKey V
ON T.Col1 = V.Col1
AND T.Col2 = V.Col2
GO
/* Output:
Col1 Col2 Col3
----------- ----------- -----------
2 3 34
2 3 6
7 9 1
7 9 67
(4 row(s) affected)
*/
/* Pulizia */
DROP VIEW dbo.vw_GetKey
DROP TABLE dbo.Test
> grazie mille
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org