2017-10-05 5 views
-3

J'ai une vue qui a des soldes pour les codes nominaux.Changer la disposition de vue - SQL

J'ai le code nominal sur chaque ligne avec les périodes Jan-Dc dans chaque colonne

Je voudrais changer de sorte que chaque code nominal a 12 lignes (1 pour chaque mois)

Je suis création de la requête SQL Server Management Studio - Cette vue peut ensuite être extraite dans Sage. La vue actuelle est

SELECT TOP (1000) [AccountNumber] 
    ,[Jan17] 
    ,[Feb17] 
    ,[Mar17] 
    ,[Apr17] 
    ,[May17] 
    ,[Jun17] 
    ,[Jul17] 
    ,[Aug17] 
    ,[Sep17] 
    ,[Oct17] 
    ,[Nov17] 
    ,[Dec17] 
From Sage_200.dbo.NominalBalance                    

-je besoin chaque mois pour une ligne pour chaque code nominal au lieu d'une ligne et chaque mois ayant sa propre colonne.

Merci

+3

** S'il vous plaît [EDIT] ** votre question et ajoutez quelques [données d'échantillon] (http://plaintexttools.github.io/plain-text-table/) et la sortie attendue basée sur ces données. [** Texte formaté **] (http://stackoverflow.com/help/formatting) s'il vous plaît, [** aucune capture d'écran **] (http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-de-code-sur-alors-quand-pose-une-question/285557 # 285557). ** [modifier] ** votre question - ne ** pas ** code postal ou des informations supplémentaires dans les commentaires. –

Répondre

0

Voici un bon lien SQL Server : Columns to Rows Sur la base de votre question un UNPIVOT pourrait ressembler à ceci.

USE SANDBOX 
DROP TABLE T 
CREATE TABLE T(CDE INT,JAN INT,FEB INT,MAR INT,APR INT,MAY INT,JUN INT,JUL INT,AUG INT,SEP INT,OCT INT,NOV INT,DEC INT) 
GO 

TRUNCATE TABLE T 
INSERT INTO T VALUES (111,1,2,3,4,5,6,7,8,9,10,11,12),(222,13,14,15,16,17,18,19,20,21,22,23,24) 

SELECT CDE,MTH,VALUE 
FROM T 
UNPIVOT (VALUE FOR MTH IN (JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC)) UPVT 

Résultat

CDE    VALUE 
----------- ---- ----------- 
111   JAN 1 
111   FEB 2 
111   MAR 3 
111   APR 4 
111   MAY 5 
111   JUN 6 
111   JUL 7 
111   AUG 8 
111   SEP 9 
111   OCT 10 
111   NOV 11 
111   DEC 12 
222   JAN 13 
222   FEB 14 
222   MAR 15 
222   APR 16 
222   MAY 17 
222   JUN 18 
222   JUL 19 
222   AUG 20 
222   SEP 21 
222   OCT 22 
222   NOV 23 
222   DEC 24 

(24 row(s) affected) 
+0

Merci beaucoup :) –