SQL 多轴
SQL Multiple Pivot
我在 Microsoft SQL 服务器 (table A
) 中设置了以下数据,并试图在 ID_1
和 ID_2
两列上进行旋转。我可以在一列上旋转,但在串联列上旋转时遇到困难。任何帮助将不胜感激。
我有什么(table A
):
Date ID_1 ID_2 Value
1-Jan 1 a 77
1-Jan 1 b 113
1-Jan 1 c 212
2-Jan 1 a 159
2-Jan 1 b 85
2-Jan 1 c 46
3-Jan 1 a 300
3-Jan 1 b 456
3-Jan 1 c 100
我需要什么(table B
):
Date 1_a 1_b 1_c
1-Jan 77 113 212
2-Jan 159 85 46
3-Jan 300 456 100
查询 1:
DECLARE @Table TABLE ([Date] VARCHAR(10),ID_1 INT, ID_2 CHAR(1), Value INT)
INSERT INTO @Table VALUES
('1-Jan', 1 ,'a', 77 ),
('1-Jan', 1 ,'b', 113),
('1-Jan', 1 ,'c', 212),
('2-Jan', 1 ,'a', 159),
('2-Jan', 1 ,'b', 85),
('2-Jan', 1 ,'c', 46),
('3-Jan', 1 ,'a', 300),
('3-Jan', 1 ,'b', 456),
('3-Jan', 1 ,'c', 100)
SELECT *
FROM (
SELECT [Date]
, CAST(ID_1 AS VARCHAR(10)) + '_' + ID_2 AS Cols
, Value
FROM @Table)t
PIVOT (SUM(Value)
FOR Cols
IN([1_a],[1_b],[1_c])
)p
| Date | 1_a | 1_b | 1_c |
|-------|-----|-----|-----|
| 1-Jan | 77 | 113 | 212 |
| 2-Jan | 159 | 85 | 46 |
| 3-Jan | 300 | 456 | 100 |
我在 Microsoft SQL 服务器 (table A
) 中设置了以下数据,并试图在 ID_1
和 ID_2
两列上进行旋转。我可以在一列上旋转,但在串联列上旋转时遇到困难。任何帮助将不胜感激。
我有什么(table A
):
Date ID_1 ID_2 Value
1-Jan 1 a 77
1-Jan 1 b 113
1-Jan 1 c 212
2-Jan 1 a 159
2-Jan 1 b 85
2-Jan 1 c 46
3-Jan 1 a 300
3-Jan 1 b 456
3-Jan 1 c 100
我需要什么(table B
):
Date 1_a 1_b 1_c
1-Jan 77 113 212
2-Jan 159 85 46
3-Jan 300 456 100
查询 1:
DECLARE @Table TABLE ([Date] VARCHAR(10),ID_1 INT, ID_2 CHAR(1), Value INT)
INSERT INTO @Table VALUES
('1-Jan', 1 ,'a', 77 ),
('1-Jan', 1 ,'b', 113),
('1-Jan', 1 ,'c', 212),
('2-Jan', 1 ,'a', 159),
('2-Jan', 1 ,'b', 85),
('2-Jan', 1 ,'c', 46),
('3-Jan', 1 ,'a', 300),
('3-Jan', 1 ,'b', 456),
('3-Jan', 1 ,'c', 100)
SELECT *
FROM (
SELECT [Date]
, CAST(ID_1 AS VARCHAR(10)) + '_' + ID_2 AS Cols
, Value
FROM @Table)t
PIVOT (SUM(Value)
FOR Cols
IN([1_a],[1_b],[1_c])
)p
| Date | 1_a | 1_b | 1_c |
|-------|-----|-----|-----|
| 1-Jan | 77 | 113 | 212 |
| 2-Jan | 159 | 85 | 46 |
| 3-Jan | 300 | 456 | 100 |