Consulta SQL

03/11/2004 - 13:37 por Lara | Informe spam
Hola grupo!!

Necesito realizar una consulta sobre una tabla y no se me ocurre cómo
hacerla.

Os envío un pequeño ejemplo en un script que crea la tabla y la carga con
datos.


CREATE TABLE [dbo].[Tabla] (
[IdTabla] [int] NOT NULL ,
[Codigo] [int] NULL ,
[Descripcion] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 1, N'Descripcion 1')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 1, N'Descripcion 2')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 1, N'Descripcion 3')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 1, N'Descripcion 4')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 2, N'Descripcion 2')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 2, N'Descripcion 3')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 3, N'Descripcion 6')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (1, 4, N'Descripcion 1')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (2, 2, N'Descripcion 2')

INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (2, 2, N'Descripcion 3')


INSERT INTO [dbo].[Tabla] ([IdTabla], [Codigo], [Descripcion])
VALUES (2, 5, N'Descripcion 3')


La consulta que yo quería hacer siempre filtra por un IdTabla, y tengo que
mostrar TODOS los campos de la tabla, pero realizando un distinct, de tal
forma, que me muestre SÓLO un registro por cada Codigo, me da igual el que
sea, si aparece cuatro veces, me basta con el primer registro.

Ejecuten esta select:
select * from tabla where idtabla=1

El resultado es:

IdTabla Codigo Descripcion
1 1 Descripcion 1
1 1 Descripcion 2
1 1 Descripcion 3
1 1 Descripcion 4
1 2 Descripcion 2
1 2 Descripcion 3
1 3 Descripcion 6
1 4 Descripcion 1


Y el resultado que quiero conseguir es:

IdTabla Codigo Descripcion
1 1 Descripcion 1
1 2 Descripcion 2
1 3 Descripcion 6
1 4 Descripcion 1


Sólo quiero mostrar un registro por cada Codigo.


Podría añadir algún campo nuevo en la tabla, si así fuera más fácil obtener
el resultado que quiero, pero NO puedo eliminar ningún campo..
Es que realmente mi tabla, es una vista.., pero para simplificar la
explicación, os he puesto sólo los tres campos que me interesan, pero podría
obtener alguna columna más en la vista que facilitara la consulta.


A ver si alguien puede ayudarme.
Muchas gracias!
Lara
 

Leer las respuestas

#1 ulises
03/11/2004 - 14:02 | Informe spam
Solo necesitas agruparlo y en la descripción usar MIN o MAX
según sea el criterio para obtener la descripción, algo como :

SELECT IdTabla, Codigo, MIN(Descripcion) FROM Tabla
WHERE idTabla = 1
GROUP BY IdTabla, Codigo

Saludos,
Ulises

Mostrar la cita
ocurre cómo
Mostrar la cita
tabla y la carga con
Mostrar la cita
SQL_Latin1_General_CP1_CI_AS NULL
Mostrar la cita
IdTabla, y tengo que
Mostrar la cita
distinct, de tal
Mostrar la cita
da igual el que
Mostrar la cita
más fácil obtener
Mostrar la cita
simplificar la
Mostrar la cita
interesan, pero podría
Mostrar la cita
consulta.
Mostrar la cita

Preguntas similares