Necesito un dato especifico de una consulta select

18/06/2007 - 16:58 por sir_gragon | Informe spam
Un amigo me pide lo siguiente y no se como implementarlo:
Tengo la siguiente Tabla
A B
1 a
1 b
2 c
3 d
3 e
4 f
5 g
6 h

y quiere obtener solo la 1º fila de cada A es decir:
A B
1 a
2 c
3 d
4 f
5 g
6 h

¿Como lo puedo hacer? Gracias

Preguntas similare

Leer las respuestas

#1 Pedro
18/06/2007 - 17:45 | Informe spam
con esto podras solucionarlo.


declare @a char(1)
declare @b char(1)

set @a='a'
set @b='b'

if @b > @a print N'OK'


;-D
Norman

"sir_gragon" wrote:

Un amigo me pide lo siguiente y no se como implementarlo:
Tengo la siguiente Tabla
A B
1 a
1 b
2 c
3 d
3 e
4 f
5 g
6 h

y quiere obtener solo la 1º fila de cada A es decir:
A B
1 a
2 c
3 d
4 f
5 g
6 h

¿Como lo puedo hacer? Gracias


Respuesta Responder a este mensaje
#2 sir_gragon
18/06/2007 - 17:58 | Informe spam
Hasta el dia de hoy ningun graciosete me habia contestado, no se si
reirme o reirme, anda "majo" porque no me ayudas con la solucion en
cuante de reirte de mi o con "mi"...

Puede ser que no haya quedado claro pero a b c son datos que pueden
ser texto numero codigo alfanumericos etc y lo que deseo es un tipo
select * from * con la funcion que lo realize... si se puede claro...
asi como distinct te devuelve solo una de multiples pilas iguales yo
quiero un distinct de un solo campo, no de toda la fila

On 18 jun, 17:45, Pedro wrote:
con esto podras solucionarlo.

declare @a char(1)
declare @b char(1)

set @a='a'
set @b='b'

if @b > @a print N'OK'

;-D
Norman

"sir_gragon" wrote:
> Un amigo me pide lo siguiente y no se como implementarlo:
> Tengo la siguiente Tabla
> A B
> 1 a
> 1 b
> 2 c
> 3 d
> 3 e
> 4 f
> 5 g
> 6 h

> y quiere obtener solo la 1º fila de cada A es decir:
> A B
> 1 a
> 2 c
> 3 d
> 4 f
> 5 g
> 6 h

> ¿Como lo puedo hacer? Gracias
Respuesta Responder a este mensaje
#3 Alejandro Mesa
18/06/2007 - 19:16 | Informe spam
sir_gragon,

Es importante definir cual es el criterio a usar para identificar una fila
como la primera del grupo. Supongamos que en tu ejemplo, el criterio es
ordenar por la columna [B] y tomar el minimo, entonces:

create table #t (
A int not null,
B char(1) not null
)
go

insert into #t values(1, 'a')
insert into #t values(1, 'b')
insert into #t values(2, 'c')
insert into #t values(3, 'd')
insert into #t values(3, 'e')
insert into #t values(4, 'f')
insert into #t values(5, 'g')
insert into #t values(6, 'h')
go

select
A, B
from
#t as a
where
not exists (
select *
from #t as b
where b.A = a.A and b.B < a.B
)
order by
A

;with cte
as
(
select A, B, row_number() over(partition by A order by B) as rn
from #t
)
select A, B
from cte
where rn = 1
order by A
go

drop table #t
go


AMB


"sir_gragon" wrote:

Un amigo me pide lo siguiente y no se como implementarlo:
Tengo la siguiente Tabla
A B
1 a
1 b
2 c
3 d
3 e
4 f
5 g
6 h

y quiere obtener solo la 1º fila de cada A es decir:
A B
1 a
2 c
3 d
4 f
5 g
6 h

¿Como lo puedo hacer? Gracias


Respuesta Responder a este mensaje
#4 Ele
19/06/2007 - 02:15 | Informe spam
Utiliza la agrupacion y funciones de agrupacion
Select A, Min (B)
From tabla
Group By A

"Alejandro Mesa" escribió en el
mensaje news:
sir_gragon,

Es importante definir cual es el criterio a usar para identificar una fila
como la primera del grupo. Supongamos que en tu ejemplo, el criterio es
ordenar por la columna [B] y tomar el minimo, entonces:

create table #t (
A int not null,
B char(1) not null
)
go

insert into #t values(1, 'a')
insert into #t values(1, 'b')
insert into #t values(2, 'c')
insert into #t values(3, 'd')
insert into #t values(3, 'e')
insert into #t values(4, 'f')
insert into #t values(5, 'g')
insert into #t values(6, 'h')
go

select
A, B
from
#t as a
where
not exists (
select *
from #t as b
where b.A = a.A and b.B < a.B
)
order by
A

;with cte
as
(
select A, B, row_number() over(partition by A order by B) as rn
from #t
)
select A, B
from cte
where rn = 1
order by A
go

drop table #t
go


AMB


"sir_gragon" wrote:

Un amigo me pide lo siguiente y no se como implementarlo:
Tengo la siguiente Tabla
A B
1 a
1 b
2 c
3 d
3 e
4 f
5 g
6 h

y quiere obtener solo la 1º fila de cada A es decir:
A B
1 a
2 c
3 d
4 f
5 g
6 h

¿Como lo puedo hacer? Gracias


Respuesta Responder a este mensaje
#5 sir_gragon
19/06/2007 - 08:50 | Informe spam
Gracias a los dos por vuestra respuesta me ha sido de utilidad.


On 19 jun, 02:15, "Ele" wrote:
Utiliza la agrupacion y funciones de agrupacion
Select A, Min (B)
From tabla
Group By A

"Alejandro Mesa" escribió en el
mensajenews:

> sir_gragon,

> Es importante definir cual es el criterio a usar para identificar una fila
> como la primera del grupo. Supongamos que en tu ejemplo, el criterio es
> ordenar por la columna [B] y tomar el minimo, entonces:

> create table #t (
> A int not null,
> B char(1) not null
> )
> go

> insert into #t values(1, 'a')
> insert into #t values(1, 'b')
> insert into #t values(2, 'c')
> insert into #t values(3, 'd')
> insert into #t values(3, 'e')
> insert into #t values(4, 'f')
> insert into #t values(5, 'g')
> insert into #t values(6, 'h')
> go

> select
> A, B
> from
> #t as a
> where
> not exists (
> select *
> from #t as b
> where b.A = a.A and b.B < a.B
> )
> order by
> A

> ;with cte
> as
> (
> select A, B, row_number() over(partition by A order by B) as rn
> from #t
> )
> select A, B
> from cte
> where rn = 1
> order by A
> go

> drop table #t
> go

> AMB

> "sir_gragon" wrote:

>> Un amigo me pide lo siguiente y no se como implementarlo:
>> Tengo la siguiente Tabla
>> A B
>> 1 a
>> 1 b
>> 2 c
>> 3 d
>> 3 e
>> 4 f
>> 5 g
>> 6 h

>> y quiere obtener solo la 1º fila de cada A es decir:
>> A B
>> 1 a
>> 2 c
>> 3 d
>> 4 f
>> 5 g
>> 6 h

>> ¿Como lo puedo hacer? Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida