-1

J'ai lu de nombreux articles sur ce site ainsi que d'autres concernant l'utilisation de PIVOT, UNPIVOT, UNION et CROSS JOIN, mais je n'arrive pas à obtenir les résultats que je recherche.Retour des colonnes en tant que lignes pour enregistrement unique

Ma table se présente comme suit:

EmployeeName Salary Address    City  State Zip  AdditionalDetails 
========================================================================================= 
Doe, John  400000 111 Jackson Ave  Nowhere  CA  99999 Reliable 
Blow, Joe  300000 222 Johnson St  Somewhere ME  00000 Always late 

Ce que je suis en train de montrer est la suivante:

EmployeeName  Doe, John 
Salary    400000 
Address    111 Jackson Ave 
City    Nowhere 
State    CA 
Zip     99999 
AdditionalDetails Reliable 

Le plus proche que je suis venu utilise UNPIVOT comme suit, cependant, le problème est que les deux colonnes sont transposées, j'ai besoin de les échanger même si je ne suis pas sûr de savoir comment faire cela.

SELECT * 
FROM 
(
    SELECT EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails 
    FROM EmployeeDetails 
    WHERE [email protected] 
) AS SourceTable 
UNPIVOT 
(
    Value FOR Header IN 
    (EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails) 
) AS UnpivotTable 

Donc ce que je reçois est:

Value   Header 
Doe, John  EmployeeName 
400000   Salary 
111 Jackson Ave Address 
Nowhere   City 
CA    State 
99999   Zip 
Reliable  AdditionalDetails 

Comment puis-je obtenir les données affichées comme je l'ai besoin? Je commencerai en disant qu'il n'y aura qu'un seul enregistrement d'employé retourné à la fois avec cette requête. J'ajoute ces données dans un fichier CSV et demande que l'enregistrement de l'employé soit affiché de cette façon.

Répondre

3

Vous êtes presque là:

Le code que vous avez est:

SELECT * 
FROM 
(
    SELECT EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails 
    FROM EmployeeDetails 
    WHERE [email protected] 
) AS SourceTable 
UNPIVOT 
(
    Value FOR Header IN 
    (EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails) 
) AS UnpivotTable 

Vous devriez avoir:

SELECT Header, Value 
FROM 
(
    SELECT EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails 
    FROM EmployeeDetails 
    WHERE [email protected] 
) AS SourceTable 
UNPIVOT 
(
    Value FOR Header IN 
    (EmployeeName, Salary, Address, City, State, Zip, AdditionalDetails) 
) AS UnpivotTable 

Les résultats:

+0

Impressionnant, Merci beaucoup! – aantiix

+0

@aantiix De rien! –