Grundlæggende deaktiverer han dataene ved hjælp af 3 udvalgte sætninger (1 for hver attribut) og UNION
dem sammen for at lave et fælles tabeludtryk, så han får rækker for hver medarbejder-attribut.
select employeeId, department, attribute1, 1 rn from employees union all
select employeeId, department, attribute2, 2 rn from employees union all
select employeeId, department, attribute3, 3 rn from employees
Den anden tabel bruger en vinduesfunktion til at tildele et nummer til attribut, afdeling. Han bruger dette nummer senere til at slutte sig tilbage til sine ikke-pivoterede data. Han postede sin kode til eksemplet.
select a.*, row_number() over (partition by department order by attributeID) rn
from attributes a
Jeg vil foreslå, at du bruger hans eksempeldata, han har leveret, og kører følgende. Dette vil vise dig CTE'erne. Jeg tror, at når du ser de data, vil det give mere mening.
with a as (
select a.*, row_number() over (partition by department order by attributeID) rn
from attributes a),
e as (
select employeeId, department, attribute1, 1 rn from employees union all
select employeeId, department, attribute2, 2 rn from employees union all
select employeeId, department, attribute3, 3 rn from employees
)
SELECT * from a
SELECT * from e