2012-09-27 17 views
9

tengo algunas columnas en una tablaCómo seleccionar distinta acerca de columnas específicas

Col1, Col2, Col3, Col4

Ahora quiero seleccionar como esto

SELECT DISTINCT (Col1, Col2, Col3), Col4

es decir, obtener la base distinta o n solo estos tres colunms.

+0

Qué pasa con el 'Col4' que debe realizar alguna agregación de esto para cada valor distinto de las otras 3 columnas? –

+0

Puede obtener ayuda de esta publicación http://stackoverflow.com/questions/1471250/counting-distinct-over-multiple-columns –

Respuesta

3

Desde un comentario a otra respuesta:

¿Puedo obtener como esto Col1, Col2, Col3 y (Col4 en forma delimitador)

sí, se puede utilizar el for xml path.

select Col1, 
     Col2, 
     Col3, 
     (
     select ',' + T2.Col4 
     from YourTable T2 
     where T1.Col1 = T2.Col1 and 
       T1.Col2 = T2.Col2 and 
       T1.Col3 = T2.Col3 
     for xml path(''), type 
     ).value('substring((./text())[1], 2)', 'varchar(max)') as Col4 
from YourTable as T1 
group by T1.Col1, T1.Col2, T1.Col3 

SQL Fiddle

6

Sólo GROUP BY Col1, Col2, Col3 con una función de agregado con la col4 como MAX, MIN, etc .. así:

SELECT Col1, Col2, Col3, MAX(Col4) 
FROM TableName 
GROUP BY Col1, Col2, Col3 
+0

Es un campo varchar, solo quiero tener registros distintos basados ​​en tres columnas. – Zerotoinfinity

+0

@Zerotoinfinite ¿Qué pasa con 'col4' qué quieres hacer para cada valor distinto para las otras filas? –

+0

Col4 es varchar y no puedo hacer ninguna agregación sobre eso. pero esa es una columna única. Quería hacerme único con 3 columnas y simplemente agregar la cuarta columna relacionada con esa fila – Zerotoinfinity

0

El grupo por realizar y distinta funcionalidad casi similar en SQL:

por lo que ambas consultas a continuación son casi equivalentes:

SELECT DISTINCT Col1, Col2, Col3 FROM tbl 

SELECT Col1, Col2, Col3 FROM tbl GROUP BY Col1, Col2, Col3 
+1

Pero quiero tener Col4 también en el conjunto de resultados – Zerotoinfinity

+0

¿Por qué no escribe una consulta interna haciendo distintas columnas de 3 y la consulta externa tomando 3 interiores y Col4 de filas coincidentes? – RMN

0
select distinct (Convert(varchar(255),Col1) +' '+ 
Convert(varchar(255),Col2)+' '+Convert(varchar(255),Col3)), 
Col4 from clients 
Cuestiones relacionadas