2017-06-23 4 views
-1

je dois créer des vues SQL qui convertit la table en cours dans le format souhaité mentionné ci-dessousComment ajouter une colonne de catégorie dans SQL et redimensionnez les enregistrements en créant des vues dans SQL

j'introduire une nouvelle colonne de catégorie et remodeler les colonnes en conséquence.

table layout Curent:

 Date | A flows| B flows | C flows | A yield | B Yield | C Yield | A Spread | B Spread | C Spread 
    ---------------------------------------------------------------------------------------------------- 
    1/1/17 |10  | 20  |30  | 5  |10  |15  | 1  | 2  |3 

souhaité Voir le plan:

  Date Category flows yield Spread 
     1/1/17  A  10  5  1 
     1/1/17  B  20  10  2 
     1/1/17  C  30  15  3 

Quelqu'un peut-il aider à créer une vue SQL qui classera les colonnes existantes en 3 catégories.

Merci!

Répondre

1

J'utiliser cross apply:

select v.* 
from t cross apply 
    (values (date, 'A', A_Flows, A_yield, A_spread), 
      (date, 'B', B_Flows, B_yield, B_spread), 
      (date, 'C', C_Flows, C_yield, C_spread) 
    ) v(date, category, flows, yield, spread); 

Vous pouvez mettre create view as avant que la requête pour créer une vue.

+0

Je crois que les littéraux prévue dans la deuxième et troisième expressions de valeur de ligne sont 'B; et C'. –

+0

@DanGuzman. . . Je vous remercie. –

0

Vous pouvez le faire en utilisant UNION. Sélectionnez chaque catégorie séparément, puis rejoindre les 3 catégories confondues:

SELECT Date, 'A' AS Category, A_flows AS flows, A_yield AS yield, A_spread AS spread FROM your_table 
UNION 
SELECT Date, 'B' AS Category, B_flows AS flows, B_yield AS yield, B_spread AS spread FROM your_table 
UNION 
SELECT Date, 'C' AS Category, C_flows AS flows, C_yield AS yield, C_spread AS spread FROM your_table