sql >> Database teknologi >  >> RDS >> Oracle

Skal arrangere medarbejdernavne i henhold til deres by kolonnemæssigt

Desværre er det, du forsøger at gøre, ikke muligt, i det mindste ikke i "lige" SQL - du ville have brug for dynamisk SQL, eller en to-trins proces (i det første trin generere en streng, der er en ny SQL-sætning). Kompliceret.

Problemet er, at du ikke inkluderer en fast liste over bynavne (som strenge bogstaver). Du forsøger at oprette kolonner baseret på hvad du får fra (vælg by blandt medarbejdere). Antallet af kolonner og navnet på kolonnerne kendes således ikke, før Oracle-motoren læser dataene fra tabellen, men før motoren starter, skal den allerede vide, hvad alle kolonnerne vil være. Modsigelse.

Bemærk også, at hvis dette var muligt, ville du næsten helt sikkert ønske (vælg adskilt by fra ansatte).

TILFØJET:OP stiller et opfølgende spørgsmål i en kommentar (se nedenfor).

Det ideelle arrangement er, at byerne ligger i deres eget, mindre bord, og at "byen" i medarbejdertabellen har en fremmednøglebegrænsning, så "by"-tinget er overskueligt. Du ønsker ikke, at en HR-assistent skal ind i New York, en anden skal ind i New York City og en tredje skal ind i NYC for den samme by. På den ene eller den anden måde, prøv først din kode ved at erstatte underforespørgslen, der følger operatoren IN i pivotsætningen med blot den kommaseparerede liste over strenge bogstaver for byerne:... IN ('DFW', 'CH', 'NY'). Bemærk, at rækkefølgen, du placerer dem i på denne liste, vil være rækkefølgen af ​​kolonnerne i outputtet. Jeg tjekkede ikke hele forespørgslen for at se, om der er andre problemer; prøv dette, og lad os vide, hvad der sker.

Held og lykke!



  1. Sådan tilføjer du lodrette grænser til dit SQL*Plus / SQLcl-outputgitter

  2. Sådan finder du sorteringen i SQL Server (T-SQL)

  3. Oracle:Hvordan konverterer jeg hex til decimal i Oracle SQL?

  4. MariaDB RTRIM() vs RTRIM_ORACLE():Hvad er forskellen?