Order By em 2 colunas

11/04/2020

0

Meus amigos, meu primeiro tópica.
Gostaria de sanar uma dúvida.

possuo esse script :

SELECT usu.cd_usuario,
p.cd_tip_presta,
tip.nm_tip_presta
FROM dbasgu.usuarios usu,
prestador p,
tip_presta tip
WHERE p.cd_prestador = usu.cd_prestador
AND tip.cd_tip_presta = p.cd_tip_presta
AND usu.sn_ativo = ''''S''''
AND tip.cd_tip_presta IN ( 4, 5, 6, 8,
9, 10, 14 )
ORDER BY 3


Se trata de um select em um cadastro de prestados em um sistema hospitalar.

Neste , tip.cd_tip_presta possuo = ENFERMEIROS, MÉDICOS, TECNICOS DE ENFERMAGEM, NUTRICIONISTAS.....
e cd_usuario, são os logins do prestados no sistema.

Minha dúvida.

Se ordeno pela coluna nm_tip_presta, eu não consigo tratar a coluna por ondem de importância, oque estou tentando dizer é :

Eu preciso de um select onde eu orden a coluna cd_usuário e a coluna "nm_tip_presta" por ordem de importancia.

da forma que postei ai, se ordeno pela coluna 3 (nm_tip_presta), a primeira informação vem ENFERMEIRO e se eu por desc retorna TÉCNICO DE ENFERMAGEM..

Queria ordenar a coluna cd_usuário e também a coluna nm_tip_presta por importancia : médico, enfermeiro, nutricionista, fono.....

Alguém tem alguma ideia ??

ps : Uso SQLTools
Pedro Costa

Pedro Costa

Responder

Posts

11/04/2020

Pedro Costa

Meus amigos, meu primeiro tópica.
Gostaria de sanar uma dúvida.

possuo esse script :

SELECT usu.cd_usuario,
p.cd_tip_presta,
tip.nm_tip_presta
FROM dbasgu.usuarios usu,
prestador p,
tip_presta tip
WHERE p.cd_prestador = usu.cd_prestador
AND tip.cd_tip_presta = p.cd_tip_presta
AND usu.sn_ativo = ''''S''''
AND tip.cd_tip_presta IN ( 4, 5, 6, 8,
9, 10, 14 )
ORDER BY 3


Se trata de um select em um cadastro de prestados em um sistema hospitalar.

Neste , tip.cd_tip_presta possuo = ENFERMEIROS, MÉDICOS, TECNICOS DE ENFERMAGEM, NUTRICIONISTAS.....
e cd_usuario, são os logins do prestados no sistema.

Minha dúvida.

Se ordeno pela coluna nm_tip_presta, eu não consigo tratar a coluna por ondem de importância, oque estou tentando dizer é :

Eu preciso de um select onde eu orden a coluna cd_usuário e a coluna "nm_tip_presta" por ordem de importancia.

da forma que postei ai, se ordeno pela coluna 3 (nm_tip_presta), a primeira informação vem ENFERMEIRO e se eu por desc retorna TÉCNICO DE ENFERMAGEM..

Queria ordenar a coluna cd_usuário e também a coluna nm_tip_presta por importancia : médico, enfermeiro, nutricionista, fono.....

Alguém tem alguma ideia ??

ps : Uso SQLTools


Faço um ORDER BY CASE tip.nm_tip_presta WHEN 'MEDICO' THEN usu.cd_usuario end
assim, ele ordena a coluna de login, com a coluna dos prestadores, no caso médico.
porém, quando acabar os "medicos", bagunça tudo novamente nas colunas, sai tudo de ordem.
Queria após ordenar os médicos, ordenar os enfermeiros..
Responder

11/04/2020

Emerson Nascimento

não sei se entendi o que você precisa...
veja se é isto:
SELECT
	usu.cd_usuario,
	p.cd_tip_presta,
	tip.nm_tip_presta
FROM
	dbasgu.usuarios usu,
INNER JOIN
	prestador p on p.cd_prestador = usu.cd_prestador
INNER JOIN
	tip_presta tip on tip.cd_tip_presta = p.cd_tip_presta
WHERE
	usu.sn_ativo = 'S'
	AND tip.cd_tip_presta IN ( 4, 5, 6, 8, 9, 10, 14 )
ORDER BY
	(CASE tip.nm_tip_presta
		WHEN 'MEDICO' THEN 1
		WHEN 'NUTRICIONISTA' THEN 2
		WHEN 'ENFERMEIRO' THEN 3
	ELSE 4
	END)

ou seja, você monta a ordenação conforme a importância que você dá para cada nm_tip_presta (não use cd_usuario, use uma constante, como exemplificado).

Responder

12/04/2020

Pedro Costa

não sei se entendi o que você precisa...
veja se é isto:
SELECT
	usu.cd_usuario,
	p.cd_tip_presta,
	tip.nm_tip_presta
FROM
	dbasgu.usuarios usu,
INNER JOIN
	prestador p on p.cd_prestador = usu.cd_prestador
INNER JOIN
	tip_presta tip on tip.cd_tip_presta = p.cd_tip_presta
WHERE
	usu.sn_ativo = 'S'
	AND tip.cd_tip_presta IN ( 4, 5, 6, 8, 9, 10, 14 )
ORDER BY
	(CASE tip.nm_tip_presta
		WHEN 'MEDICO' THEN 1
		WHEN 'NUTRICIONISTA' THEN 2
		WHEN 'ENFERMEIRO' THEN 3
	ELSE 4
	END)

ou seja, você monta a ordenação conforme a importância que você dá para cada nm_tip_presta (não use cd_usuario, use uma constante, como exemplificado).



Obrigado pelo seu retorno.

Assim, ficou boa sua ideia, mas eu precisa mesmo ordenar tbm a coluna cd_usuario , é pra estudo, entende ??

eu preciso ordenar a linha médico e agrupar em ordem alfabetica os logins (cd_usuario).
Quando encerrar médico, começar enfermeiro tbm com logins em ordem alfabética ..

é mais pra conhecimento isso... o select em sí já ta pronto, exporto e faço oque quero no excel......
Responder

12/04/2020

Pedro Costa

não sei se entendi o que você precisa...
veja se é isto:
SELECT
	usu.cd_usuario,
	p.cd_tip_presta,
	tip.nm_tip_presta
FROM
	dbasgu.usuarios usu,
INNER JOIN
	prestador p on p.cd_prestador = usu.cd_prestador
INNER JOIN
	tip_presta tip on tip.cd_tip_presta = p.cd_tip_presta
WHERE
	usu.sn_ativo = 'S'
	AND tip.cd_tip_presta IN ( 4, 5, 6, 8, 9, 10, 14 )
ORDER BY
	(CASE tip.nm_tip_presta
		WHEN 'MEDICO' THEN 1
		WHEN 'NUTRICIONISTA' THEN 2
		WHEN 'ENFERMEIRO' THEN 3
	ELSE 4
	END)

ou seja, você monta a ordenação conforme a importância que você dá para cada nm_tip_presta (não use cd_usuario, use uma constante, como exemplificado).



Obrigado pelo seu retorno.

Assim, ficou boa sua ideia, mas eu precisa mesmo ordenar tbm a coluna cd_usuario , é pra estudo, entende ??

eu preciso ordenar a linha médico e agrupar em ordem alfabetica os logins (cd_usuario).
Quando encerrar médico, começar enfermeiro tbm com logins em ordem alfabética ..

é mais pra conhecimento isso... o select em sí já ta pronto, exporto e faço oque quero no excel......


RESOLVIDO :

SELECT CASE t.nm_tip_presta
WHEN 'MEDICO' THEN 1
WHEN 'ENFERMEIRO' THEN 2
WHEN 'FISIOTERAPIA' THEN 3
WHEN 'NUTRICIONISTA' THEN 4
WHEN 'FONOAUDIOLOGIA' THEN 5
WHEN 'PSICOLOGO' THEN 6
WHEN 'TECNICO EM ENFERMAGEM' THEN 7
END TAG,
usu.cd_usuario,
t.nm_tip_presta
FROM dbasgu.usuarios usu,
prestador p,
tip_presta t
WHERE p.cd_prestador = usu.cd_prestador
AND t.cd_tip_presta = p.cd_tip_presta
AND usu.sn_ativo = 'S'
AND t.cd_tip_presta IN ( 8, 4, 5, 6,
9, 10, 14 )
ORDER BY 1,
3,
2
Responder

13/04/2020

Emerson Nascimento

sugestão: evite utilizar o índice do campo.
utilize o próprio campo. assim você pode alterar a query à vontade, sem precisar se preocupar se a ordenação via continuar funcionando caso você altere a ordem dos campos da SELECT.
SELECT
	CASE t.nm_tip_presta
		WHEN 'MEDICO' THEN 1
		WHEN 'ENFERMEIRO' THEN 2
		WHEN 'FISIOTERAPIA' THEN 3
		WHEN 'NUTRICIONISTA' THEN 4
		WHEN 'FONOAUDIOLOGIA' THEN 5
		WHEN 'PSICOLOGO' THEN 6
		WHEN 'TECNICO EM ENFERMAGEM' THEN 7
	END TAG,
	usu.cd_usuario,
	t.nm_tip_presta
FROM
	dbasgu.usuarios usu,
	prestador p,
	tip_presta t
WHERE
	p.cd_prestador = usu.cd_prestador
	AND t.cd_tip_presta = p.cd_tip_presta
	AND usu.sn_ativo = 'S'
	AND t.cd_tip_presta IN ( 8, 4, 5, 6, 9, 10, 14 )
ORDER BY
	CASE t.nm_tip_presta
		WHEN 'MEDICO' THEN 1
		WHEN 'ENFERMEIRO' THEN 2
		WHEN 'FISIOTERAPIA' THEN 3
		WHEN 'NUTRICIONISTA' THEN 4
		WHEN 'FONOAUDIOLOGIA' THEN 5
		WHEN 'PSICOLOGO' THEN 6
		WHEN 'TECNICO EM ENFERMAGEM' THEN 7
	END,
	t.nm_tip_presta,
	usu.cd_usuario

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar