繁体   English   中英

SQL Server表转换查询/将列名称与值组合

[英]SQL Server Table Transformation Query / Combine Column Names With Values

这是我现有的SQL表,具有3列(q1,q2,q3)和2行:

> q1 q2 q3
> --------
> 1  2  3
> 4  5  6

我需要一个SQL查询,该查询将转换该表并返回一个结果集,该结果集包含2个新列(cg,sg)和6个将表列名称与值组合在一起的行:

> cg  sg
> ======
> q1  1
> q1  4
> q2  2
> q2  5
> q3  3
> q3  6

也许这需要某种“ PIVOT”操作,但经过多次尝试,我无法使其正常工作。

有什么建议或解决方案吗? 谢谢。

PS我不能使用存储过程,只能使用一个查询。

您可以使用UNION进行此操作:

SELECT 'q1' as cg, q1 as sg FROM t1
UNION SELECT 'q2' as cg, q2 as sg FROM t1
UNION SELECT 'q3' as cg, q3 as sg FROM t1

这是仅扫描表一次的另一种方法。

SELECT
   x.*
FROM tbl t
CROSS APPLY( VALUES
    ('q1', q1),
    ('q2', q2),
    ('q3', q3)
) x(cg, sg)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM