Exibir status dentro de um select.

• Pergunta

• Ola pessoal microsoft

Preciso de um help, pois eu não tenho noção de como resolver esse problema.

Selecione os três primeiros colocados da lista com a frase inicial Podium: e também, os dois últimos times que serão rebaixados para série B com a frase inicial Demoted:

```SELECT TEAM FROM LEAGUE WHERE
POSITION <= 3 OR POSITION >= 14;```

A logica até eu entendo,  queria saber como coloca um texto (Podium, e Demonted) dentro do select name;

Esquema

 Coluna Tipo position (PK) integer team varchar

Tabelas

 position team 1 The Quack Bats 2 The Responsible Hornets 3 The Bawdy Dolphins 4 The Abstracted Sharks 5 The Nervous Zebras 6 The Oafish Owls 7 The Unequaled Bison 8 The Keen Kangaroos 9 The Left Nightingales 10 The Terrific Elks 11 The Lumpy Frogs 12 The Swift Buffalo 13 The Big Chargers 14 The Rough Robins 15 The Silver Crocs

Exemplo de Saída

 name Podium: The Quack Bats Podium: The Responsible Hornets Podium: The Bawdy Dolphins Demoted: The Rough Robins Demoted: The Silver Crocs

INSERTS E TABELA PARA TESTE

```CREATE TABLE LEAGUE(
POSITION NUMERIC PRIMARY KEY,
TEAM VARCHAR (255)
);

INSERT INTO LEAGUE (POSITION, TEAM) VALUES (1, 'The Quack Bats');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (2, 'The Responsible Hornets');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (3, 'The Bawdy Dolphins');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (4, 'The Abstracted Sharks');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (5, 'The Nervous Zebras');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (6, 'The Oafish Owls');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (7, 'The Unequaled Bison');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (8, 'The Keen Kangaroos');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (9, 'The Left Nightingales');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (10, 'The Terrific Elks');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (11, 'The Lumpy Frogs');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (12, 'The Swift Buffalo');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (13, 'The Big Chargers');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (14, 'The Rough Robins');
INSERT INTO LEAGUE (POSITION, TEAM) VALUES (15, 'The Silver Crocs');```

terça-feira, 29 de maio de 2018 21:38

Respostas

• É possível utilizar o CASE para fazer isso:

`SELECT CASE          WHEN POSITION <= 3 THEN 'Podium: '         ELSE 'Demoted: '       END + TEAM  AS NameFROM LEAGUE WHERE POSITION <= 3 OR POSITION >= 14;`

Caso queira um exemplo mais dinâmico:

```;WITH CTA
AS (
SELECT COUNT(1) AS QT
FROM LEAGUE
)

SELECT position
,CASE WHEN position <= 3 THEN 'Podium: '
ELSE 'Demoted: '
END + league.team AS name
FROM LEAGUE
CROSS APPLY CTA
WHERE league.position <= 3
OR league.position >= CTA.QT - 1
```

terça-feira, 29 de maio de 2018 22:55

Todas as Respostas

• Deleted
terça-feira, 29 de maio de 2018 22:15
• Coloquei no topo do tópico.
terça-feira, 29 de maio de 2018 22:45
• É possível utilizar o CASE para fazer isso:

`SELECT CASE          WHEN POSITION <= 3 THEN 'Podium: '         ELSE 'Demoted: '       END + TEAM  AS NameFROM LEAGUE WHERE POSITION <= 3 OR POSITION >= 14;`

Caso queira um exemplo mais dinâmico:

```;WITH CTA
AS (
SELECT COUNT(1) AS QT
FROM LEAGUE
)

SELECT position
,CASE WHEN position <= 3 THEN 'Podium: '
ELSE 'Demoted: '
END + league.team AS name
FROM LEAGUE
CROSS APPLY CTA
WHERE league.position <= 3
OR league.position >= CTA.QT - 1
```

terça-feira, 29 de maio de 2018 22:55
• Esse exemplo não funcionou comigo, deve ser porque eu estou fazendo os scripts no Oracle 11g.
terça-feira, 29 de maio de 2018 23:57
• Este é um comando eu montei com base no SQL Server, qual comando não está funcionando o primeiro ou o segundo? O oracle parece ter a mesma funcionalidade tratando-se do case.
quarta-feira, 30 de maio de 2018 00:04
• Deleted
quarta-feira, 30 de maio de 2018 00:39