【问题标题】:Change layout of view - SQL更改视图布局 - SQL
【发布时间】:2018-03-16 19:21:50
【问题描述】:

我有一个视图,其中包含名义代码的余额。

我在每一行都有标称代码,每列都有一月到十二月的时间段

我想更改为每个标称代码有 12 行(每个月 1 行)

我正在创建查询 SQL Server Management Studio - 然后可以将该视图拉入 Sage。当前视图是

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

我要求每个月为每个标称代码有一行,而不是一行,每个月都有自己的列。

谢谢

【问题讨论】:

标签: sql-server tsql ddl sql-view


【解决方案1】:

这是一个很好的链接SQL Server : Columns to Rows 根据您的问题,unpivot 可能看起来像这样。

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

结果

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多