|
我有一张表,上面有列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 |
|