Cuando escribes un SELECT tienes la posibilidad de decirle que deseas que te devuelva todos los resultados o solamente aquellos que son distintos a los demás.
Por ejemplo, supongamos que deseamos conocer todas las unidades de medida utilizadas por nuestros productos. La columna donde se guarda ese dato se llama PRD_UNIMED.
SELECT DISTINCT PRD_UNIMED FROM PRODUCTOS
La cláusula DISTINCT le obliga al Firebird a mostrarnos solamente una vez a cada unidad de medida. Eso quiere decir que aunque haya 240 productos cuya unidad de medida sea KLG (kilogramos) la palabra KLG aparecerá una sola vez en el resultado. ¿Por qué? porque escribimos la cláusula DISTINCT.
En la tabla VENTASCAB guardamos los datos de cabecera de cada venta realizada (sucursal, fecha, identificador del cliente, etc.), ¿cuáles son los años que tenemos registrados en esa tabla? ¿se encuentran allí las ventas que hicimos en el año 2006?. Lo podremos saber fácilmente con este SELECT:
SELECT DISTINCT EXTRACT(YEAR FROM VTC_FECHAX) FROM VENTASCAB
cada uno de los años de las ventas registradas aparecerá una vez y solamente una vez. Por ejemplo, podríamos obtener:
2008
2009
2010
2011
2012
2013
entonces, aunque la tabla VENTASCAB tenga miles y miles de filas solamente veríamos 6 filas, las que corresponden a cada uno de los años en que se registraron ventas.
Ejemplo Nº 050 – Más sobre el uso de DISTINCT | Firebird SQL
May 04, 2013 @ 03:37:20
El índice del blog Firebird21 | Firebird SQL
Jun 16, 2013 @ 20:44:18
Sep 15, 2015 @ 16:17:38
Que tal buenas tardes.
Por qué no me funciona si pongo un campo memo en el Select?
Está definido como
BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET WIN1252
en Firebird 1.5
Gracias, saludos.
Sep 16, 2015 @ 00:37:58
¿Qué significa que “no funciona”?
Si escribes algo como:
Verás el contenido de esa columna.
Saludos.
Walter.
Sep 18, 2015 @ 10:38:43
Que tal Walter, me refería al uso de DISTINCT. Si escribo algo como
Select Distinct
T2.MiColumnaBlob
From T1
left join T2 on T1.T2_Id=T2.T2_Id
Where T1.campo=valor
esperaba que me mostrara una entrada por cada valor diferente en MiColumnaBlob, sin embargo, aparecen valores repetidos. ¿Esto se debe al join? ¿Cómo podría resolverlo?
Gracias,
saludos.
Sep 18, 2015 @ 12:24:11
¿Qué versión de Firebird estás utilizando?
Yo utilizo la 2.5.4 y funciona perfectamente bien.
Saludos.
Walter.
Sep 19, 2015 @ 20:20:43
Quizás los campos parece iguales pero no contienen exactamente lo mismo.
Sep 21, 2015 @ 12:21:24
Es Firebird 1.5
En cuanto al contenido, lo he revisado visualmente caracter por caracter, para asegurar, he comparado las cadenas de texto en excel, y aparentemente son idénticas; me devuelve cuatro registros con la misma cadena.
Gracias por su atención.
Sep 24, 2015 @ 19:40:49
¿Como has comparado en Excel?, creo que la única forma de ver si es exactamente igual es con la función IGUAL(), pues el comparador = creo que ignora algunos caracteres especiales.