UNPIVOT查询语句中的列名冲突问题

Shuang 100 信誉分
2024-11-22T02:12:37.2866667+00:00

这是测试表和查询语句:

DECLARE @Table TABLE(ID INT,Val1 VARCHAR(10),Val2 VARCHAR(10),Val3 VARCHAR(10));

INSERT INTO @Table
VALUES  (1,'aa','bb','cc'),
        (2,'dd','ee','ff');

--SELECT * FROM @Table

SELECT * 
FROM @Table
UNPIVOT(ID FOR VAL IN(Val1,Val2,Val3))U

想要实现列转行,在网上查询到UNPIVOT函数,但是出现如下报错信息:在 UNPIVOT 运算符中指定的列名 "ID" 与 UNPIVOT 参数中现有的列名冲突,该怎么修改?

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
175 个问题
Transact-SQL
Transact-SQL
ANSI SQL 语言的 Microsoft 扩展,包括过程编程、局部变量和各种支持函数。
23 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. LiHongMSFT-4306 29,191 信誉分
    2024-11-22T02:41:14.57+00:00

    你好,

    试试这样修改:

    SELECT ID,VAL  
    FROM @Table
    UNPIVOT(VAL FOR Columns IN(Val1,Val2,Val3))U
    

    或者你也可以用UNION ALL,像这样:

    SELECT ID,Val1 FROM @Table
    UNION ALL
    SELECT ID,Val2 FROM @Table
    UNION ALL
    SELECT ID,Val3 FROM @Table
    ORDER BY ID
    

    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。