回答

收藏

如何在SQL中将列标题及其值转换为行?

技术问答 技术问答 173 人阅读 | 0 人回复 | 2023-09-14

我有一张表,上面有列col1, col2, col3。该表中有很多行。
' r8 e' _! B$ Q) r假设val1, val2, val3是这样的一行。我想得到的结果' I, V  z. v" l
Col1, Val12 \; P* T2 x, u' H' G
Col2, Val2
* o+ C! b$ ^" q- D5 `# b  g& t( ]* qCol3, Val38 p  P7 M& F) n8 j: E
那就是3行-每列和它的值一个。* m* u+ U4 l, U& r* _
我正在使用SQL Server2008。我了解了枢轴。枢轴是否可以解决此问题?有人可以指导我介绍一些示例或解决方案来解决此问题吗?4 U6 Y3 |8 q$ I" X2 s
非常感谢
7 K- D( [& Z' d( [               
) Q. L9 N3 d- x* L7 M( _解决方案:; ]' `) h  ~4 m
               
' g3 O& A- E; X+ V- G4 \( K% c9 e5 v8 `% C$ |

6 i2 \6 i  k% v. N/ \& s: u                也许是这样的:5 J- a2 s2 F4 @6 u3 r# y) _
测试数据6 d" Y: A* A( B- Z; p
DECLARE @T TABLE(Col1 INT, Col2 INT, Col3 INT)
9 ~( S6 ^, f5 fINSERT INTO @T
( W5 }! u( S3 ?+ H) }VALUES (1,1,1)0 E) z! J, i6 [, w
询问, i9 }# o* i* W' @# w; D( f. O
SELECT
/ @' k; e+ ~6 E' c$ d: ?# x- q9 y: I    *
* V6 B( `% X( e" q/ f/ wFROM
& ~! k/ c5 J, m() X1 X+ _  ]1 D* z& ?$ Y
    SELECT
; M0 r* q# Y- R/ n        t.Col1,# c( W  G3 j3 Y1 H" {% `0 v2 l8 W
        t.Col2,
. K4 u  `! B/ N8 \2 e        t.Col3
1 Q# l9 T" i9 ?) [# _: c    FROM
& t9 V  p9 C; V( [4 W' O  y' _        @T AS t( x) h" B4 I# _0 Y3 P# v
) AS SourceTable5 ]1 M, O) i" D- p* l% R
UNPIVOT9 J4 a) j. p1 [; |6 A1 d
(9 e; E- h  O" u
    Value FOR Col IN7 e4 b/ ?1 y& ~- Y6 Y
    (Col1,Col2,Col3)
7 c7 |! ]4 ^* n" I3 z) S( s2 b, z) AS unpvt
; N/ R: }/ B. @2 A/ q输出
2 W, V6 F& R) H3 t9 \' s, g6 l# P1   Col1
* l( l$ c6 C6 _1   Col2
1 A; r! I% T: t; T6 T1   Col3
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则