We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- SQL
- Advanced Select
- Occupations
- Discussions
Occupations
Occupations
Sort by
recency
|
2167 Discussions
|
Please Login in order to post a comment
MS SQL SERVER
WITH ordered AS ( SELECT Name, Occupation, ROW_NUMBER() OVER(PARTITION BY Occupation ORDER BY Name) AS rn FROM OCCUPATIONS ), ctc as ( SELECT * FROM ( SELECT Name, Occupation, rn FROM ordered ) AS src PIVOT ( MAX(Name) FOR Occupation IN ([Doctor], [Professor], [Singer], [Actor]) ) AS p ) SELECT Doctor, Professor, Singer, Actor FROM ctc ORDER BY rn;
MS SQL Server
MySQL
Isso funcionou!!
SELECT MAX(IF(Occupation = 'Doctor', Name, NULL)) AS Doctor, MAX(IF(Occupation = 'Professor', Name, NULL)) AS Professor, MAX(IF(Occupation = 'Singer', Name, NULL)) AS Singer, MAX(IF(Occupation = 'Actor', Name, NULL)) AS Actor FROM ( SELECT @doc := IF(Occupation = 'Doctor', @doc + 1, @doc) AS rn_doc, @prof := IF(Occupation = 'Professor', @prof + 1, @prof) AS rn_prof, @sing := IF(Occupation = 'Singer', @sing + 1, @sing) AS rn_sing, @act := IF(Occupation = 'Actor', @act + 1, @act) AS rn_act, Name, Occupation, CASE Occupation WHEN 'Doctor' THEN @doc WHEN 'Professor' THEN @prof WHEN 'Singer' THEN @sing WHEN 'Actor' THEN @act END AS rn FROM ( SELECT Name, Occupation FROM OCCUPATIONS ORDER BY Occupation, Name ) AS sorted, (SELECT @doc := 0, @prof := 0, @sing := 0, @act := 0) AS vars ) AS numbered Group By rn Order By rn; ) AS numbered GROUP BY rn ORDER BY rn;
SELECT MAX(CASE WHEN Occupation = 'Doctor' THEN Name END) AS Doctor, MAX(CASE WHEN Occupation = 'Professor' THEN Name END) AS Professor, MAX(CASE WHEN Occupation = 'Singer' THEN Name END) AS Singer, MAX(CASE WHEN Occupation = 'Actor' THEN Name END) AS Actor FROM ( SELECT Name, Occupation, ROW_NUMBER() OVER (PARTITION BY Occupation ORDER BY Name) AS rn FROM OCCUPATIONS ) AS ranked GROUP BY rn ORDER BY rn;