【发布时间】:2015-08-28 16:37:35
【问题描述】:
如果我要转换为行的列都以列名中的前缀“c”开头,如何将某些列动态转置为行。我有一张如下表
DECLARE @t codes
(
Tax CHAR(5),
ptype CHAR(2),
c1 CHAR(1),
c2 char(1),
c3 char(1)
)
insert into @t (tax, ptype, c1, c2, c3) values ('AAAAA','10',Null, 1,2)
insert into @t (tax, ptype, c1, c2, c3) values ('BBBBB','21',3, 1,NULL)
insert into @t (tax, ptype, c1, c2, c3) values ('ZZZZZ','1',NULL, NULL, 2)
insert into @t (tax, ptype, c1, c2, c3) values ('CCCCC',NULL,1,3,4)
insert into @t (tax, ptype, c1, c2, c3) values ('YYYYY','4',NULL, NULL, NULL)
insert into @t (tax, ptype, c1, c2, c3) values ('DDDDD','8',2,5,6)
当 ptype 不是 'NULL' 以及 c1、c2、c3 不是 'NULL' 且 C1、C2、C3 值按升序排序时,如何输出以下内容?
Tax ptype Columns value
----- ----- ------- -----
AAAAA 10 c2 1
AAAAA 10 c3 2
BBBBB 21 c2 1
BBBBB 21 c1 3
ZZZZZ 1 c3 2
DDDDD 8 c1 2
DDDDD 8 c2 5
DDDDD 8 c3 6
【问题讨论】:
-
你的输出一点都不清楚。你想要文字值'C2'等吗?如果你能清楚地解释你的输出,我们可以提供帮助。
-
@SeanLange 我想要“列”中的列名。我将编辑 OP 以澄清。谢谢
标签: sql-server sql-server-2005 unpivot