Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinicius Silva_166087

Aleatoriedade por registro

Recommended Posts

Proprietario Veiculo

Vinicius uno

Vinicius palio

Vinicius gol

Thiago celta

Thiago fox

Rodrigo i30


Boa tarde, gostaria de saber como randomizar 1 registro por Proprietario.

Exemplo de resultado:


Proprietario Veiculo

Vinicius uno

Thiago celta

Rodrigo i30


Como faço isso no SQL Server?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select prop, veic,max(newid()) x

From tabela

Group by prop,veic

 

Nao twnho como testar

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz uma tabela virtual

 

select prop, veic, max(x)
from
(
Select prop, veic,newid() x 
From tabela
) virtual
group by prop, veic

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo visto o SQl Server não permite que seja coluna virtual.

 

Tentou com rand() ?

 

 

select prop, veic, max(r) 
from ( Select prop, veic,rand() r 
       From tabela ) virtual 
group by prop, veic

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora preciso do seguinte:

- selecionar um registro com marca vw e dois de outras marcar quaisquer.

Exemplo:

Proprietario Veiculo Marca
Vinicius uno fiat
Vinicius palio fiat
Vinicius gol vw
Vinicius celta gm
Rodrigo uno fiat
Rodrigo jeta vw
Rodrigo sonic gm

 

Minha seleção deve ser aleatória da seguinte maneira:

 

Proprietario Veiculo Marca
Vinicius uno fiat
Vinicius palio fiat
Vinicius gol vw
Rodrigo uno fiat
Rodrigo jeta vw
Rodrigo sonic gm

 


 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou uma combinação , tipo ...

 


with CTE_WM as
(
    select
        prop, veic,
        ROW_NUMBER() OVER(PARTITION BY prop ORDER BY prop,newid()) as RN,
newid() as id
    from tabela
    WHERE MARCA = 'WM'
)

with CTE_NWM as
(
    select
        prop, veic,
        ROW_NUMBER() OVER(PARTITION BY prop ORDER BY prop,newid()) as RN,
newid() as id
    from tabela
    WHERE MARCA <> 'WM'
)
 
select * from CTE_WM
where RN<=1
UNION
select * from CTE_NWM
where RN<=2

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.